自动布局约束允许我完美地调整视图的大小和布局,而不事先知道它们将在哪个屏幕上呈现。当我在故事板上绘制UI时,这种方法运行得相当不错。
让我们继续以编程方式创建视图。
我的应用程序正在运行,界面已在屏幕上呈现,我有所有必要的坐标,并且已完成大小调整。
我想动态创建一些视图,例如:
UIImageView
,只需按一下按钮即可显示动画,然后消失UIView
的集合,根据基础数据模型在屏幕上创建和布局(想象一下这里的一系列事件,安排在自定义时间轴上)在类似的场景中,我仍然倾向于使用好的旧帧,例如:
let myView = UIView(frame: CGRectMake(x, y, w, h))
不添加任何NSLayoutConstraint
。
考虑到增加的复杂性,是否有使用约束的明显优势,特别是当您需要为视图设置动画时?
答案 0 :(得分:0)
最重要的方面是你实际计算你的框架(哪种方法),如果你想要普遍支持,你需要支持各种方向。
在viewController中,如果您在self.view
和viewDidLoad
或viewWillAppear:
中打印出viewWillLayoutSubviews
框架,它可能会有不同的值。最终框架(例如,iPhone 6 plus的框架)不在viewDidLoad
中计算。因此,如果您在那里进行视图设置,则计算将是错误的。
但是有了约束,你添加它们的位置并不重要。您可能需要在视图更改后调用layoutIfNeeded
,但您无需担心天气帧的最终值。
对于仅在短时间内可见的视图,自动布局可能会对不同的方向产生影响。通过使用框架,您必须在方向更改回调中更新临时视图的框架。
此外,如果在故事板中使用自动布局,则使用静态框架以编程方式创建的视图可能无法提供您期望的结果。但是,当然,这取决于您项目的特殊性。