gpt4 book ai didi

iOS 自动布局 UIView 绘制循环

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:14:45 26 4
gpt4 key购买 nike

在 WWDC 的一个视频中,Apple 表示布局是自上而下完成的,即从 superview 到 subview(在自下而上计算约束后)。显示也是自上而下完成的。

我的问题是:1. viewcontroller 中的什么时候确定 View 的框架(原点和大小)?我尝试记录 View 的大小(使用自动布局定义),但它始终为 0 0 0 0,这很奇怪,因为 View 已经在模拟器中生成;

对于自动调整大小的 View ,view.frame 何时可用?

  1. 同样的问题,只是这次是 UIImageView.frame。我尝试登录到控制台,即使大小符合约束条件,登录的 UIImageView 框架也是 0 0 width_of_original_image height_of_original_image。但对于标签等其他 View ,框架会在控制台上正确打印。

似乎有一个神秘的自动布局引擎进行转换,没有人知道引擎内部发生了什么,但要检查模拟器显示器上抛出的内容才能弄清楚这个引擎是如何渲染 View 的???

最佳答案

这并不神秘。这很简单!将约束视为写在纸上的说明 - View 。每隔一段时间,就是布局时间!运行时从 View 中按顺序收集纸张并服从它们 - 因此您最终得到布局好的框架。

因此,如果您在布局时间之前检查事物的大小,您会得到错误的答案,因为它还没有发生。

什么时候布局时间?每当运行时发送 View layoutSubviews - 实际上,运行时遵守约束并在 layoutSubviews 期间执行布局。您的 View Controller 可以通过 viewWillLayoutSubviewsviewDidLayoutSubviews 在此之前或之后听到。

我认为最让初学者感到困惑的部分是当 View Controller 出现时会发生什么。 viewDidLoad 意味着它一个 View ,但仅此而已; View 及其 subview 都不在界面中,因此显然不可能有布局。 稍后,我们得到viewWillAppear:, View 进入界面,现在我们得到布局。因此,如果您检查尺寸,例如 viewDidAppear:,它们将是正确的。

关于iOS 自动布局 UIView 绘制循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29873664/

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