簡體   English   中英

通過代碼自動布局問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM