Динамически устанавливать верхнее поле и высоту вида, используя autolayout - swift3 - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю над пользовательским интерфейсом, где у меня есть 3 метки. Все расположены вертикально-

Метка 1

Метка 2

Метка 3

  1. Элемент списка За один раз любые две метки будут показаны пользователю.
  2. Например, если отображаются Метка 1 и Метка 3 , то я хочу сместить Метку 3 вверх метка1 и сделать Метка2 высота до 0.
    1. Если отображаются Label2 и Label3 , мы должны сместить как label вверх, так и установить label1 height в 0. Так что каждый раз метка topmst должна иметь одинаковое верхнее поле от superview. Это может быть Label1, Label2 или Label3

Должен ли я использовать представление стека для достижения этого требования?

Каков наилучший способ сделать это с помощью автоматического макета?

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете сгруппировать ограничения различных сценариев в IBOutletCollection (NSLayoutConstraint) (по одному на сценарий / группу ограничений), например:

@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) NSArray *scenarioNConstraints;

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

for (NSLayoutConstraint *constraint in scenarioNConstraints) {
    [constraint setActive:YES]; //or [constraint setActive:NO];
}
...