2013-02-22 20 views
1

我試圖設置一個面板來顯示一些信息。我無法讓自動播出按照需要工作。NSLayoutConstraint設置

這裏就是我想要做的事:

enter image description here

我有一個headerView,一個UIImageView和5個標籤。我希望標籤垂直排列,我希望他們從UIImageView 8間距。我可以行之垂直向上足夠容易:

[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[headerView]-[acresLabel]-[addedLabel(==acresLabel)]-[typeLabel(==acresLabel)]-[zonesLabel(==acresLabel)]-[sceneLabel(==acresLabel)]-|" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(headerView, acresLabel, addedLabel, typeLabel, zonesLabel, sceneLabel)]]; 

但讓他們排隊關閉影像觀點被證明是乏味的功能/ verbose:

[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[acresLabel]" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(imageView, acresLabel)]]; 

[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[addedLabel]" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(imageView, addedLabel)]]; 

[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[typeLabel]" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(imageView, typeLabel)]]; 

[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[zonesLabel]" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(imageView, zonesLabel)]]; 

[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[sceneLabel]" 
                    options:0 
                    metrics:nil 
                     views:NSDictionaryOfVariableBindings(imageView, sceneLabel)]]; 

似乎是一個更好的方式來做到這一點,然後成立每個標籤對圖像視圖的約束。我嘗試將NSLayoutFormatAlignAllCenterX添加到第一個約束,但它將它們全部置於內容視圖的中心X,不會將標籤的中心X彼此對齊。 NSLayoutFormatAlignAllBaseline在垂直使用時會出現錯誤和崩潰。

我必須對數據再次執行此操作(英畝:'值')。

回答

6

您正在和NSLayoutFormatAlignAllCenterX正確的方向行進。所有你需要做的不同是隔離V:[headerView]-[acresLabel]與約束的其餘部分,因爲你不希望headerView的CenterX與5個標籤對齊。

// NSDictionary* views ; 
[NSLayoutConstraint constraintsWithVisualFormat:@"V:[headerView]-[acresLabel]" options:0 metrics:nil views:views] ; 
// Use any of the horizontal NSLayoutFormats (NSLayoutFormatAlignAllLeft, NSLayoutFormatAlignAllRight, NSLayoutFormatAlignAllLeading, NSLayoutFormatAlignAllTrailing, NSLayoutFormatAlignAllCenterX) 
[NSLayoutConstraint constraintsWithVisualFormat:@"V:[acresLabel]-[addedLabel(==acresLabel)]-[typeLabel(==acresLabel)]-[zonesLabel(==acresLabel)]-[sceneLabel(==acresLabel)]-|" options:NSLayoutFormatAlignAllCenterX metrics:0 views:views] ; 
[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[acresLabel]" options:0 metrics:nil views:views] ; 
+0

是的,就是這樣。謝謝! – Padin215 2013-02-22 17:48:50