2016-02-06 2 views
0

У меня есть UIScrollView, к которому я добавляю UITextView. У меня есть следующие ограничения, что я также добавление к виду:Странное поведение NSLayoutConstraint

NSLayoutConstraint *xConstraint = [NSLayoutConstraint constraintWithItem:textView2 attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:_scrollView attribute:NSLayoutAttributeLeading multiplier:1.0 constant:50]; 

Это ограничение работает отлично, но изменить его от ведущих к заднему, как это так, не имеет никакого эффекта. Он по-прежнему отображается на основе ведущего.

NSLayoutConstraint *xConstraint = [NSLayoutConstraint constraintWithItem:textView2 attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:_scrollView attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:50]; 

Я не имею ни малейшего представления, почему расположение UITextView не меняет позицию, когда я изменить ограничение ведущих к заднему. Я понимаю, что мне также нужно будет изменить 50 на -50, если это сдерживает задний край, но это не так.

+0

После немного большего количества экспериментов это, кажется, проблема scrollView. Если я заменил scrollView на UIView и попробую тот же код, он будет работать так, как ожидалось. – Scooter

ответ

0

Решение этой проблемы заключалось в том, чтобы вставить UIView внутри UIScrollView. Я сделал это в раскадровке и установил верхние и нижние ограничения для UIView в UIScrollView, но я установил ведущие и конечные ограничения для UIView родительскому представлению, содержащему UIScrollView, который, в свою очередь, содержит UIView. Это позволяет корректно работать с ведущими и конечными ограничениями.