Обновить автоматическое расположение при удалении вида
Я пытаюсь использовать Auto Layout для простого интерфейса.
Иногда, в зависимости от информации, полученной сервером, нам нужно удалить UIImageView
(когда нет изображения для отображения).
Если я просто сделаю [image removeFromSuperview]
тогда все под изображением применяет свои ограничения к вершине суперпредставления вместо метки "описание продавца".
Я пытался просто обновить кадр, но, видимо, это не разрешено. Я попытался ввести PIN-код описания продавца и VIP-скидок с другой меткой приоритета, но, по-видимому, эта опция пропала в новой версии Xcode.
1 ответ
Вы можете активировать и деактивировать ограничения в коде. Создайте в IB два ограничения: одно для макета с представлением изображения, а другое без него. Создать IBOutlet
подключен к каждому ограничению. Снимите флажок "установлен" для того, что вы считаете не по умолчанию:
При удалении вида изображения измените активные состояния ограничений соответствующим образом:
[imageViewPresentConstraint setActive:NO];
[imageViewAbsentConstraint setActive:YES];
Сделайте обратное, если изображение будет восстановлено. ВНИМАНИЕ! Во всех случаях обязательно отключайте систему, прежде чем активировать ее, чтобы избежать классического сообщения журнала о конфликтах.