作者:赵智威_ | 来源:互联网 | 2023-05-24 15:09
我们目前遇到的问题似乎只会影响iOS7设备.
在我们的.xib文件中,我们在容器视图中有两个视图(即:不在视图层次结构的顶层),需要显示为圆形.视图具有应用于它们在容器内的位置和水平间距的约束,以及需要它们是正方形的纵横比条件.根据所描述的约束,视图应在较大的屏幕尺寸上扩展宽度/高度.
在我们的VC中,viewDidLayoutSubviews中有以下内容强制这些视图显示为圆形:
- (void)viewDidLayoutSubviews {
self.progressContentContainerView.layer.cornerRadius = self.progressContentContainerView.frame.size.width/2;
}
这似乎在iOS8上运行良好,但是在iOS7上,在显示视图之后有一段时间尚未应用约束并且视图/视图的大小不正确(请参阅附带的屏幕截图).这会自行解决,并在半秒后正确呈现一个圆圈.这似乎只发生在我们打算成为循环viewDidLayoutSubviews
的视图不在VC的视图层次结构的顶层时,这似乎意味着在子视图的子视图也被布局之前被调用.
我的猜测是我们可以通过为嵌套容器子类化UIView来修复这个问题,在这个子类中添加对圆形视图的引用,并viewDidLayoutSubviews
在此处覆盖以进行cornerRadius调整.这似乎有点像一个解决方法,我很想知道是否还有其他选择.
这个问题是否有更清洁/更惯用的解决方案?