什么时候调用布局子视图?我有一个定制的视图layoutSubview动画期间的消息。我有一个充满屏幕的视图。它在屏幕底部有一个自定义子视图,如果我更改导航条的高度,它将在InterfaceBuilder中正确调整大小。layoutSubviews在创建视图时调用,但不会再次调用。我的子视图布局正确。如果我关闭调用状态栏,则子视图的layoutSubviews则根本不调用,即使主视图确实对其大小进行了动画化。在什么情况下layoutSubviews真的打电话了?我有过autoresizesSubviews设为NO我的定制视图。在InterfaceBuilder中,我有顶部和底部的支柱和垂直箭头集。这个难题的另一个部分是,必须将窗口设置为键:[window makeKeyAndVisible];否则,子视图不会自动调整大小。
3 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
layoutSubviews:
它自己的 界
(不是框架)改变了。 它的一个直接子视图的界限发生了变化。 子视图将添加到视图中或从视图中删除。
只有在新值不同的情况下,才会认为边界是更改的, 包括一个不同的起源
..请特别注意,这就是为什么 layoutSubviews:
每当UIScrollView滚动时调用,因为它通过更改边界的来源来执行滚动。 更改框架只会在大小更改时更改边界,因为这是传播到边界属性的唯一内容。 视图层次结构中尚未出现的视图边界上的更改将导致调用 layoutSubviews:
当视图最终被添加到视图层次结构时.为了完整起见:这些触发器不会 直接
调用layoutSubview,而是调用 setNeedsLayout
,它设置/升起一个旗子。对于所有视图,运行循环的每一次迭代 在视图层次结构中
,这个标志被选中。对于每个发现升起国旗的视图, layoutSubviews:
被调用并重置标志。将首先检查/调用层次结构上较高的视图。
ABOUTYOU
TA贡献1812条经验 获得超5个赞
添加回答
举报
0/150
提交
取消