[英]autolayout problems by code?
我不使用sb和xib使用autolayout。但是最近我遇到了一些問題。
我不知道應該使用哪種視圖來實現以下兩種方法
- (void)addConstraint:(NSLayoutConstraint *)constraint
- (void)addConstraints:(NSArray<__kindof NSLayoutConstraint *> *)constraints
例如,我有一個超級視圖,如下所示:
_menuView = [[UIScrollView alloc] init];
_menuView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_menuView];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_menuView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_menuView)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_menuView(40)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_menuView)]];
和兩個subViews:view1,view2。當我使用自動布局添加約束來描述view1和view2時,
[WHICHVIEW addConstraint:<#(nonnull NSLayoutConstraint *)#>];
或[WHICHVIEW addConstraints:<#(nonnull NSArray <__ kindof NSLayoutConstraint *> *)#>];或
WHICHVIEW應該是什么? 讓我換一種說法,WHICHVIEW是否依賴於view1和view2之間的關系?如果view1與view2的層次結構不同怎么辦?
不要使用任何 WHICHVIEW
。 不要調用addConstraints:
而是調用NSLayoutConstraint.activateConstraints
。 它的優點是可以為您完成所有工作-自動將約束添加到正確的視圖中。
WHICHVIEW應該是您要限制的所有項目的父項。 因此,如果您要向滾動視圖添加許多視圖,並試圖限制它們相對於自身以及滾動視圖的視圖,則滾動視圖應為WHICHVIEW。 如果view1和view2根本不在同一層次結構中,則不能在兩者之間添加約束。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.