我们目前存在一个问题,似乎只影响iOS7设备。
在我们的.xib文件中,我们有两个视图嵌套在一个容器视图中(即:不在视图层次结构的顶层),需要在显示时呈圆形。这些视图的位置和水平间距受到约束的限制,并且需要满足它们是正方形的纵横比条件。这些视图应该根据所描述的约束在较大的屏幕尺寸上扩展其宽度/高度。
在我们的VC中,在viewDidLayoutSubviews中添加以下内容以强制这些视图呈现为圆形:
- (void)viewDidLayoutSubviews {
self.progressContentContainerView.layer.cornerRadius = self.progressContentContainerView.frame.size.width/2;
}
在iOS8上似乎工作得很好,但是在iOS7上,在视图显示后有一个时间段约为半秒钟,此时尚未应用约束并且视图/视图的大小不正确(请参见附加的屏幕截图)。这会自行解决,并在半秒钟后正确呈现圆形。只有当我们想要成为圆形的视图不处于VC的视图层次结构的顶层时,才会出现这种情况,这似乎意味着在子视图的子视图也被布局之前调用了viewDidLayoutSubviews
。
我猜想,我们可以通过为嵌套容器子类化UIView来潜在地解决此问题,在此子类中添加对圆形视图的引用并重写viewDidLayoutSubviews
以进行cornerRadius调整。但这似乎有点绕,我想知道是否有其他选项。
是否有更清晰/更典型的解决方案?