我不認爲你可以在Interface Builder中做到這一點,但通過在代碼中創建約束很容易。
你的第一個等式就是我如何表達約束。第二個方程可能有效,但將原點與寬度聯繫起來很奇怪。他們是不同的數量。相反,只需將innerView的右側固定在outerView的右側。
我們使用屬性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]];
一個人如何添加這樣的限制? – simme
您是否要求獲取步驟1的更多詳細信息?如果是這樣,一個這樣做的方法是按Ctrl +點擊+拖動之間的子視圖和其超級視圖,並選擇「等寬」。這將創建一個比例爲1:1的寬度約束,然後您需要選擇新創建的約束(無論是從左邊的視圖樹還是來自兩個視圖中的任意一個的大小檢查器),然後更改乘數如上所述 –
該選項被禁用,或者實際上甚至不在我身邊。我只看到前/後空間的東西...:/ – simme