【发布时间】:2015-03-28 02:52:12
【问题描述】:
我们目前遇到的问题似乎只影响 iOS7 设备。
在我们的 .xib 文件中,我们在一个容器视图中有两个视图(即:不在视图层次结构的顶层),它们需要在显示时呈圆形。视图在容器内的位置和水平间距上应用了约束,以及要求它们是正方形的纵横比条件。视图应在更大的屏幕尺寸上扩展宽度/高度,同时尊重所描述的约束。
在我们的 VC 中,我们在 viewDidLayoutSubviews 中有以下内容来强制这些视图显示为圆形:
- (void)viewDidLayoutSubviews {
self.progressContentContainerView.layer.cornerRadius = self.progressContentContainerView.frame.size.width/2;
}
这似乎在 iOS8 上运行良好,但在 iOS7 上,在显示视图后的一段时间内,尚未应用约束并且视图/视图的大小不正确(请参阅随附的屏幕截图)。这会自行解决并在半秒后正确渲染一个圆圈。只有当我们打算循环的视图不在 VC 视图层次结构的顶层时才会出现这种情况,这似乎意味着在子视图的子视图也被布置之前调用了 viewDidLayoutSubviews。
我的猜测是,我们可以通过将 UIView 子类化为嵌套容器,在此子类中添加对圆形视图的引用并在此处覆盖 viewDidLayoutSubviews 以进行cornerRadius 调整来潜在地解决此问题。不过,这似乎是一种解决方法,我很想看看是否还有其他选择。
对于这个问题有更简洁/更惯用的解决方案吗?
【问题讨论】:
-
我也有类似的问题
标签: ios ios7 autolayout