2014-01-27 4 views
0

Так что я хочу избавиться от всех «кадров» в своем коде и полностью переключиться на автозапуск. Но есть один случай, когда я хочу, чтобы позиция Y зрения зависела от content offset (bounds.origin.y) от UIScrollView. Каков правильный способ сделать это, используя auto layout? Одна из идей состоит в том, чтобы постоянно обновлять константу NSLayoutConstraint при изменении scrollview content offset (но тогда в чем смысл использования автоматического макета здесь?), Поэтому я надеялся, что есть лучший способ добиться этого с помощью «чистого» autolayout.Autolayout и UIScrollView

Я знаю, что "Autolayout & UIScrollView» часто обсуждается здесь, так что я хочу подчеркнуть, что я не хочу использовать авто макет для UIScrollView подвидов, у меня есть UIView 2 подвидов, UIScrollView и через UIView объектов, и я хочу использовать автоматическую раскладку, чтобы указать соотношение между UIView верхней координатой и UIScrollView содержания смещением.

ответ

1

КИ, вы можете сделать это довольно легко. это в основном так же, как вы могли бы сделать это с фреймами.

Первой вы n чтобы создать ограничение «переменная» и сохранить его в свойстве.

Вы можете сделать это в коде ...

self.heightConstraint = [NSLayoutConstraint constraintWithItem:self.theView 
attribute: 
relatedBy: 
toItem: 
attribute: 
multiplier: 
constant:]; 
// set up the rest 

[self.view addConstraint:self.heightConstraint]; 

или сделать это в Interface Builder, создавая ограничения, а затем Ctrl перетащить в собственность. (Как и с любым другим IBOutlet).

Тогда, когда Scrollview свитка ...

self.heightConstraint.constant = calculatedValueFromTheOffset; 

[self.view layoutIfNeeded]; 

Это будет переместить вид, как если бы вы использовали кадры, но с использованием ограничений Автокомпоновки вместо этого.

+0

Спасибо, вот что я имел в виду здесь. «Одна из идей заключается в том, чтобы константа NSLayoutConstraint обновлялась каждый раз при изменении смещения содержимого прокрутки». На самом деле это не ограничение «высоты», а скорее ограничение «top y» – dariaa

+0

ОК, круто. Да, именно так ты и сделал бы это. Не существует способа связать ограничение и смещение scrollView, поэтому на самом деле это невозможно сделать другим способом. Сожалею. – Fogmeister

Смежные вопросы