2015-01-21 3 views
6

У меня проблема, когда я хочу изменить NSLayoutconstraints в UIView, но кажется, что многие свойства доступны только для чтения. Вначале у меня было четыре UIViews как квадраты в виде квадратного представления, и они все связаны друг с другом с промежутком в 20 пикселей.AutoLayout Устранение ограничений

У меня есть кнопка, которая увеличивает рамку одного из этих квадратов в полноэкранном режиме, охватывая все остальные. Именно в этот момент я хотел бы изменить ограничения этого UIView, чтобы прикрепить его к границам супервидов в 20 пикселей, таким образом, когда я его вращаю, он не возвращается в квадратное представление, но поддерживает полный экран. Похоже, что свойство, которое я хотел бы изменить, является «вторым», но это не сработает. Я подхожу к этой проблеме не так? Я считаю Autolayout немного трудно, так что любая помощь будет высоко ценится

ответ

9

Привет вы можете сделать 2 набора ограничений:

  • 1 для управления квадратора с высоким приоритетом
  • 1 для управления в полноэкранном режиме с приоритет Низкий

В методе, который вызывается при нажатии на вашу кнопку, установите приоритет в соответствии с вашими ограничениями на полноэкранный режим и приоритетом с низким до четырех ограничений вида.

+0

Это кажется логичным, однако я получил эту ошибку во время выполнения: Mutating приоритет от требуемого не для установленного ограничения (или наоборот) не поддерживается. Вы передали приоритет 250, а существующий приоритет был 1000 – Md1079

+6

Да, ограничения, которые вы хотите изменить приоритет, не должны быть «требуемыми» (приоритет = 1000). Как я уже сказал, установите их «высокий» (приоритет = 750) и переключитесь на «низкий» (приоритет = 250) и наоборот. – Vincent

+0

Спасибо, дайте ему сходить, но в конечном итоге испортили другие взгляды (возможно, из-за плохо спроектированных ограничений)! Я закончил тем, что просто сохранил и удалил все ограничения при нажатии кнопки и создавал кучу новых программно, чтобы получить желаемый эффект. По окончании я мог просто изменить процесс. – Md1079

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