Размер второго вида игнорируется при ограничении двух видов для заполнения экрана визуальным форматом
Я пытаюсь установить ограничение, при котором ширина двух представлений должна заполнять экран. Если я изменю ширину одного вида, другой вид должен измениться соответственно:
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[view1]-8-[view2]-8-|" options:0 metrics:nil views:views]];
Я думаю, что это довольно просто, но код, кажется, игнорирует размер view2
, view1
продолжает получать всю ширину экрана и настройки кадра view2
не влияет на ширину view1
,
Что мне не хватает?
1 ответ
Назначить ограничение минимального размера view2
также, или "0 width" будет правильным решением для ограничений.
[NSLayoutConstraint activateConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[view1(>=minSize)]-8-[view2(>=minSize)]-8-|"
options:0
metrics:@{@"minSize" : @50}
views:views]];
Кроме того, не используйте addConstraints:
больше (iOS 8+). использование -[NSLayoutConstraint setActive:]
или же +[NSLayoutConstraint activateConstraints:]
Что касается изменения view2
по размеру, вы не можете установить рамки просмотра непосредственно, когда вы используете Auto Layout. Значение будет перезаписано при следующем проходе макета. Вы должны создать явное ограничение ширины для вида:
[NSLayoutConstraint constraintWithItem:view2
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:120];
а затем отрегулируйте константу этого ограничения, когда вам нужно изменить размер представления.