需要关于viewDidLayoutSubviews的帮助
关于viewDidLayoutSubviews
Apple文档说:
当视图控制器视图的边界发生变化时,视图会调整其子视图的位置,然后系统会调用此方法。 但是, 调用此方法并不表示视图子视图的各个布局已被调整。 每个子视图负责调整自己的布局。
你的视图控制器可以重写这个方法来在视图布局子视图之后进行更改。 这个方法的默认实现什么也不做。
我有view1
其中包含view2
意味着view2
是view1
的子视图。 我正在为view2
创build一个CALayer
,我希望它是view2
大小。 我正在使用auto layouts
因此我想在auto layout
完成其工作时创buildCALayer
,以便可以为CALayer
帧设置正确的值。
但在viewDidLayoutSubviews
方法,我无法检测何时完全view2
框架由auto layout
设置,因为苹果文档也说
这个方法被调用并不表示视图的子视图的个别布局已被调整。
之后,苹果医生说
你的视图控制器可以重写这个方法来在视图布局子视图之后进行更改。
我很困惑什么时候auto layout
将设置view2
框架,所以我可以相应地设置我的CALayer
框架。
正如我在评论中提到的,如果您的视图与自动布局一致,则不必做任何特别的事情。 如果您希望单个图层将视图的边界调整到layerClass
,则最简单且正确的方法是覆盖视图的layerClass
方法 – 在这种情况下,图层边界将在视图中自动调整。 如果除了标准层之外还需要一层,更新图层边界的最佳位置可能是setFrame:
方法覆盖。
作为viewDidLayoutSubviews
,它只是一个事件通知你,viewcontroller的根视图的所有子视图位于所需的位置。 您不能保证这些子视图的所有其他子视图也将保持一致,因为这是父视图本身的责任。 他们可以既自动布局定位和手动布局定位。 这个事件也不能保证所有的视图都是按照需要显示的,特别是如果它们的帧改变是animation的。
- 自定义节标题formsxib的错误宽度
- 在代码中设置的约束不会反映在输出(Autolayout iOS)
- animationUITableView时停止从animationUITableViewCells
- UICollectionViewCell 4.4和5.5英寸的dynamic大小
- 使用自动布局在CollectionView的CollectionViewCell中自动调整图像大小
- 我怎样才能使用自动布局(ios6 + ios7)4“和3.5”iphone屏幕的故事板?
- 在iOS 8中嵌套UICollectionViews,AutoLayout和旋转
- iOS容器视图不尊重intrinsicContentSize
- 如何使用iOS 6中的多个子视图自动布局现有的自定义视图