是否可以使用可視格式字符串在@"|-[a(5)]-[b(8)]-[c(5)]-|"
中平均分配b
的左右空間?使用自動佈局視覺格式字符串等分分配間距
回答
編號
但是,您可以使用視覺格式和手動約束創建。您VFL字符串更改爲:
@"|-[a(5)]->=0-[b(8)]->=0-[c(5)]-|"
這是說你不是太在意A和B,B和C之間的空間的實際大小。
現在,使用constraintWithItem:...
(我在手機上輸入此信息,因此不原諒我的整個方法)創建一個約束將b的中心固定到超視圖的中心。
這與您的靈活間距相結合,會在b的左側和右側留出空間。
Apple的Auto Layout Guide建議使用「spacer views」。這是一個有間距相等水平奠定了你的三個視圖的解決方案:
// create views dictionary
NSMutableDictionary *viewsDictionary = [NSMutableDictionary dictionary];
[viewsDictionary addEntriesFromDictionary:NSDictionaryOfVariableBindings(viewA, viewB, viewC)];
// create 4 spacer views
for (int i = 0; i < 4; i++) {
UIView *spacerView = [[UIView alloc] init];
spacerView.hidden = YES;
[self addSubview:spacerView];
[viewsDictionary setObject:spacerView
forKey:[NSString stringWithFormat:@"spacer%d", i + 1]];
}
// disable translatesAutoresizingMaskIntoConstraints in views for auto layout
[viewsDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop)
{
[obj setTranslatesAutoresizingMaskIntoConstraints:NO];
}];
// add constraints
[superview addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:
@"|[spacer1(>=0)][viewA][spacer2(==spacer1)][viewB][spacer3(==spacer1)][viewC][spacer4(==spacer1)]|"
options:kNilOptions
metrics:nil
views:viewsDictionary]];
注意spacer1
的寬度設置爲大於0的後續間隔的觀點被設定爲具有相等的寬度與spacer1
。
是否有任何理由你沒有簡單地寫'NSDictionary * views = NSDictionaryOfVariableBindings(viewA,viewB,viewC);'? –
我編輯了我的答案,在NSDictionaryOfVariableBindings中使用多個參數。我使用了一個可變字典,以便我可以動態添加我的spacer視圖。 –
哦,對。^___ ^'NSMutableDictionary * views = NSDictionaryOfVariableBindings(viewA,viewB,viewC).mutableCopy;'然後。 –
- 1. 使用自動佈局等距分隔視圖
- 2. 如何使用字符串格式來動態分配變量
- 3. html格式分配給java字符串
- 4. 使用視覺格式語言在代碼中自動佈局UIViewController
- 5. 自動視覺佈局測試
- 6. 什麼是使用自動佈局,網格視圖等?
- 7. Java格式化字符串間距
- 8. 伊娃佈局字符串格式
- 9. 如何使用字符串格式分配唯一變量?
- 10. WPF字符串格式使用自定義分隔
- 11. ASP列表視圖格式價格字符串與','分隔符
- 12. 格局字符串匹配
- 13. 字符串分配
- 14. 使用百分比相對佈局創建間距
- 15. 動態分配字符串文字
- 16. 使用視覺分析器
- 17. 如何在iOS中爲按鈕添加等間距和等寬自動佈局
- 18. 使用字符串分配欄關聯
- 19. TSQL在字符串分配中使用'
- 20. 將字符串數組分割並格式化爲佈局上的列表項
- 21. 線性佈局中的等距垂直間距不起作用
- 22. 數學通過間距s等距分配n個對象
- 23. 使用空格分隔字符串
- 24. 使用PEG.js匹配包含超視距的字符串文字
- 25. C字符串內存分配隱式?
- 26. 即使在佈局中分佈視圖
- 27. 分割字符串布爾
- 28. 部分視圖繼承自主佈局
- 29. 使用CTime&asctime將時間分配給字符串或向量字符串
- 30. 聲明字符串和分配字符串之間的區別
很好所以這篇文章涉及到這個問題[這裏](http://stackoverflow.com/questions/13075415/evenly-space-multiple-views-within-a-container-view/25898949#25898949) –