ios - 使用 initWithFrame 自动布局?

标签 ios autolayout

如果我在 iOS 中以编程方式实现自动布局,使用 initWithFrame 方法是否合适?如果不是如何初始化首选大小的 View ?

最佳答案

除非别无选择,否则最好避免使用 initWithFrame。使用自动布局,方法是定义两个指定宽度和高度的约束。有不同的方法可以做到这一点,但如果您以编程方式进行,请在 View Controller 的 updateViewConstraints 方法或 View 的 updateConstraints 方法中检查约束是否已经创建,如果没有,请将它们添加到您的 View 中。

例如

[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]];

也就是说,最好使用 Interface Builder 来完成。一旦你习惯了它——它确实需要一些时间来适应——你会发现它非常节省时间,而且比在代码中定义约束要好得多。

关于ios - 使用 initWithFrame 自动布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700133/

相关文章:

ios - 无法以编程方式移动 UITextView

ios - Swift - 预处理器宏和类声明

ios - autoLayout 和约束问题

ios - 如何使用自动布局设置组件的宽度以匹配其他 2 个组件的宽度之和?

iOS - 查找 View 的最高约束?

ios - subview 不会将后缘与其父 UIScrollView 对齐

ios - 'UITableView'没有可见的@interface声明选择器 'registerClass:forCellReuseIdentifier:'

ios - 在 UIDocument 应用程序中添加图像缩略图

xcode - 防止核心数据将实体组合到一个表中

ios - 视网膜模拟器显示非视网膜分辨率