Ответ 1
Я не думаю, что вы можете сделать это в Interface Builder, но это довольно легко сделать, создав ограничения в коде.
Ваше первое уравнение - именно то, как я буду выражать ограничение. Второе уравнение может работать, но странно относить начало координат к ширине. Они разные величины. Вместо этого просто привяжите правую сторону innerView справа от внешнего вида.
Мы используем атрибут NSLayoutAttributeTrailing
вместо NSLayoutAttributeRight
, поэтому ваш интерфейс будет корректно переворачиваться при локализованном RTL.
// innerView.width = outerView.width * 0.5
NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:innerView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:outerView
attribute:NSLayoutAttributeWidth
multiplier:0.5
constant:0];
// innerView.trailing = outerView.trailing
NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:innerView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:outerView
attribute:NSLayoutAttributeTrailing
multiplier:1.0
constant:0];
[outerView addConstraints:@[widthConstraint, rightConstraint]];