Изменение рамки программно с автоматическим расположением
У меня есть UITableView
с Autolayout, и мне нужно уменьшить высоту, когда GADBannerView
появится в нижней части экрана.
К сожалению, с помощью Autolayout невозможно изменить кадр. Решение - удалить Autolayout и установить кадр вручную. Это очень опасно, потому что все мои приложения отлично работают на дисплее 3.5 'и 4.0' и удаляют автоматическую компоновку, вызывая новую фазу тестирования и больше усилий.
Есть ли способ изменить кадр, даже если включена автоматическая компоновка?
Ответы
Ответ 1
Пусть ваши ограничения UITableView
на нижнем макете установлены на 0, сделайте IBOutlet
. Теперь пусть ваша высота GADBannerView
равна 40, поэтому измените свой outlet.constant = 40;
. Подробнее о том, как сделать IBOutlet
и изменить его значение, посмотрите this или this надеюсь, что это поможет.
Изменить: Для тех, кто ищет, например, следуйте этим простым шагам (поскольку это принятый ответ, я думаю, что стоит иметь пример. Кредит @manujmv для этого примера)
-
Создайте ограничение высоты для вашего представления в вашем интерфейсе.
-
Затем добавьте в свой класс объект IBOutlet для этого ограничения.
Например:
@property (слабый, неатомный) IBOutlet NSLayoutConstraint
* HeightConstraint;
Подключите этот объект на панели подключения.
-
Затем измените значение этого ограничения, когда вам нужно
self.heightConstraint.constant = 40;
Ответ 2
Вместо того, чтобы пытаться изменить кадр представления, добавьте ограничение высоты с помощью автоматического макета и уменьшите значение этого ограничения. Выполните следующие шаги:
- создайте высоту constarint для вашего представления в вашем интерфейсе.
-
Затем добавьте в свой класс объект IBOutlet для этого ограничения. например,
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;
Подключите этот объект на панели подключения.
-
Затем измените значение этого ограничения, когда вам нужно
self.heightConstraint.constant = 40;
Ответ 3
Еще одна вещь, вы должны вызвать метод [self.view layoutIfNeeded];
после изменения ограничений.
Наслаждайтесь:)