多年来,我一直在 Swift 和 ObjC 中使用这种技术来制作圆形视图:
view.layer.cornerRadius = view.frame.size.width / 2
view.clipsToBounds = true
当 Storyboard 中的 UILayoutConstraint 是固定宽度/高度时,将此代码放入 viewDidLoad 或 viewWillAppear 中没有问题。内置iOS9.3SDK,在iOS10等中运行良好。
iOS10SDK 显示的帧大小与 Storyboard 中的固定大小完全不同,甚至达到 viewWillAppear 和 viewDidLayoutSubviews 等。我的选项是:
1)在viewDidAppear中执行此操作(糟糕的解决方案)
2)硬编码cornerRadius(工作正常,但很糟糕)
这看起来像一个错误(因为故事板中设置的固定宽度/高度永远不应该在控制台中至少出现警告的情况下更改)。是吗,还是这个代码现在有不同的地方? (附测试代码截图)
在 iOS 10 中,我在 6 月份开始使用 Xcode 8 后就遇到了这个问题,当时它还是测试版。需要这个解决方案:
Put layoutIfNeeded()
在图层修改之前:
self.view.layoutIfNeeded()
view.layer.cornerRadius = view.frame.size.width / 2
view.clipsToBounds = true
OR
将圆角半径的代码放置到viewDidLayoutSubviews()
method:
override func viewDidLayoutSubviews() {
view.layer.cornerRadius = view.frame.size.width / 2
view.clipsToBounds = true
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)