Вы можете иметь все ограничения для LabelA.height> 0 случая, связанного с NSLayoutConstraint IBOutletCollection .
@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) *labelAScenarioConstraints;
То жедля сценария LabelA.height = 0, например
@property (strong, nonatomic) IBOutletCollection(NSLayoutConstraint) *labelAWithoutHeightScenarioConstraints
А если вы хотите изменить его, просто сделайте что-то вроде:
for (NSLayoutConstraint *constraint in labelAScenarioConstraints) {
[constraint setActive:labelA.frame.size.height > 0];
}
for (NSLayoutConstraint *constraint in labelAWithoutHeightScenarioConstraints) {
[constraint setActive:labelA.frame.size.height == 0];
}
Вы можете активировать или деактивироватьограничение путем изменения этого свойства ... Активация или деактивация ограничения вызывает addConstraint: и removeConstraint: для представления, которое является ближайшим общим предком элементов, управляемых этим ограничением.Используйте это свойство вместо прямого вызова addConstraint: или removeConstraint:
Имейте в виду, что все обновления пользовательского интерфейса должны выполняться из основного потока.Если вы хотите анимировать изменение ограничений, вы можете поместить код в UIView animateWithDuration блок анимаций.