使用initWithFrame进行自动布局?

Aro*_*ock 12 ios autolayout

如果我在iOS中以编程方式实现AutoLayout,那么使用initWithFrame方法是否正确?如果不是如何初始化首选大小的视图?

Max*_*eod 2

最好避免initWithFrame,除非你别无选择。使用自动布局,方法是定义两个指定宽度和高度的约束。有不同的方法可以执行此操作,但如果您以编程方式执行此操作,请在updateViewConstraints视图控制器的方法或updateConstraints视图的方法中检查约束是否已创建,如果没有,请将它们添加到您的视图中。

例如

[myConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[_mySubView]-(200)-|"
                                 options:0
                                 metrics:nil
                                 views:_myViewsDictionary]];

[myConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[_mySubView(100)]-|"
                                 options:0
                                 metrics:nil
                                 views:_myViewsDictionary]];
Run Code Online (Sandbox Code Playgroud)

也就是说,最好使用 Interface Builder 来完成此操作。一旦您习惯了它(确实需要一些时间来习惯),您会发现它非常节省时间,并且比在代码中定义约束要好得多。