2013-12-20 35 views
0

我想在不使用管道(「|」)的情況下在超視圖下面設置視圖。這是因爲超級視圖並不總是與管道代表相同。使用超視圖的iOS視覺格式語言

我已經嘗試的代碼是這樣的:

UIView *superview = self; 
NSDictionary *metrics = @{@"height" : @ROW_HEIGHT}; 
NSDictionary *views  = NSDictionaryOfVariableBindings(view, superview); 
NSString *hConstraint = @"H:|[view]|"; 
NSString *vConstraint = @"V:[superview][view(height)]"; 
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:hConstraint 
                  options:0 
                  metrics:nil 
                   views:views]]; 
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:vConstraint 
                  options:0 
                  metrics:metrics 
                   views:views]]; 

這不顯示任何內容。當我將「[superview]」更改爲管道時,它的工作原理如上所述,我無法使用它

回答

0

約束V:[superview][view]表示「將視圖的頂部邊緣與超級視圖的底部邊緣對齊」而不是「對齊超級視圖的頂部邊緣到這個觀點的最高優勢「,這是你想要的。您必須使用更詳細的約束構造函數(constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:)而不是視覺格式語言來構造約束。

+0

我想把視圖放在superview下面,就像V:| [view。或者我沒有得到你的答案 – Haagenti

+0

我試圖讓我的答案更清晰。語法'V:| [view]'意思是「將視圖的頂部邊緣對準超級視圖的頂部邊緣」,這與'V:[superview] [view]'不同。 –

+0

非常合乎邏輯並且失敗了;)謝謝 – Haagenti

相關問題