gpt4 book ai didi

iOS - 在 iOS7 上完成自动布局之前调用的 viewDidLayoutSubviews

转载 作者:技术小花猫 更新时间:2023-10-29 11:06:44 25 4
gpt4 key购买 nike

我们目前遇到的问题似乎只影响 iOS7 设备。

在我们的 .xib 文件中,我们在容器 View 中有两个 View (即:不在 View 层次结构的顶层)需要循环显示。这些 View 对其在容器内的位置和水平间距应用了约束,并且纵横比条件要求它们是方形的。 View 应在更大的屏幕尺寸上扩展宽度/高度,并遵守所描述的约束条件。

在我们的 VC 中,我们在 viewDidLayoutSubviews 中有以下内容来强制这些 View 显示为圆形:

- (void)viewDidLayoutSubviews {
self.progressContentContainerView.layer.cornerRadius = self.progressContentContainerView.frame.size.width/2;
}

这在 iOS8 上似乎工作正常,但在 iOS7 上,在显示 View 后的一段时间内尚未应用约束并且 View / View 的大小不正确(请参阅随附的屏幕截图)。这会自行解决并在半秒后正确呈现一个圆圈。这似乎只发生在我们打算循环的 View 不在 VC View 层次结构的顶层时,这似乎暗示 viewDidLayoutSubviews 在 subview 的 subview 也被布局之前被调用.

Circle with incorrect cornerRadius Circle properly rendered after half a second

我的猜测是,我们可以通过为嵌套容器子类化 UIView 来解决这个问题,在该子类中添加对圆形 View 的引用并覆盖此处的 viewDidLayoutSubviews 以进行 cornerRadius 调整。不过,这似乎是一种解决方法,我很想看看是否还有其他选择。

这个问题是否有更简洁/更惯用的解决方案?

最佳答案

我知道这是一个老问题,但您是否尝试过调用:

[self.progressContentContainerView setNeedsUpdateConstraints];

或:

[self.progressContentContainerView layoutIfNeeded];

关于iOS - 在 iOS7 上完成自动布局之前调用的 viewDidLayoutSubviews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205240/

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