[英]Container View's Frame Set to CGRectZero when Using Programmatic Auto Layout
[英]Under auto layout, when is a view's frame set?
如果启用了自动布局,则无需自行设置视图框架。 自动布局可以帮助我们计算视图的大小和原点。 我们可以在控制器方法“ viewDidAppear”中获取框架。 但是我想知道视图在其生命周期中何时获得其计算框架?
当一个视图收到layoutSubviews
消息时,它会基于自动布局设置其子视图的框架。 从文档中 :
此方法的默认实现在iOS 5.1及更早版本上不执行任何操作。 否则,默认实现将使用您设置的任何约束来确定任何子视图的大小和位置。
这就是为什么在您自己的UIView
子类中重写layoutSubviews
并使用自动布局时,调用[super layoutSubviews]
很重要的原因。
在自动布局中,您无需设置框架。 只需将对象初始化为[[object alloc] init]并通过自动布局约束控制其位置
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.