gpt4 book ai didi

ios - 需要有关 viewDidLayoutSubviews 的帮助

转载 作者:行者123 更新时间:2023-11-29 10:25:18 28 4
gpt4 key购买 nike

Apple 文档关于 viewDidLayoutSubviews说:

When the bounds change for a view controller's view, the view adjusts the positions of its subviews and then the system calls this method. However, this method being called does not indicate that the individual layouts of the view's subviews have been adjusted. Each subview is responsible for adjusting its own layout.

Your view controller can override this method to make changes after the view lays out its subviews. The default implementation of this method does nothing.

我有 view1其中包含 view2表示 view2view1 的 subview .我正在创建一个 CALayer对于我的 view2我想要的是 view2 的确切尺寸.我正在使用 auto layouts所以我想创建 CALayer什么时候auto layout完成它的工作,这样我就可以为 CALayer 设置正确的值框架。

但是在viewDidLayoutSubviews方法我无法检测到确切的时间 view2框架由 auto layout 设置因为 Apple 文档也这么说

this method being called does not indicate that the individual layouts of the view's subviews have been adjusted.

在那之后 Apple 文档说

Your view controller can override this method to make changes after the view lays out its subviews.

我很困惑在什么时候auto layout将设置 view2框架,这样我就可以设置我的 CALayer相应的框架。

最佳答案

正如我在评论中提到的,如果您的 View 与自动布局对齐,则无需执行任何特殊操作。如果您希望单个图层将其边界调整为 View 的边界,最简单和正确的方法是覆盖 View 的 layerClass 方法 - 在这种情况下,图层边界将在 View 内自动调整。如果除了标准层之外还需要一层,更新层边界的最佳位置可能是 setFrame: 方法覆盖。

viewDidLayoutSubviews 开始,它只是一个通知您的事件,viewcontroller 的 Root View 的所有 subview 都位于所需位置。您不能保证这些 subview 的所有其余 subview 也将对齐,因为这是父 View 本身的责任。它们既可以是自动布局定位的,也可以是手动布局定位的。此事件也不保证所有 View 都按需要显示,特别是如果它们的帧更改是动画的。

关于ios - 需要有关 viewDidLayoutSubviews 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32678975/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com