【发布时间】:2017-01-19 15:46:53
【问题描述】:
多年来,我在 Swift 和 ObjC 中一直使用这种技术来制作圆形视图:
view.layer.cornerRadius = view.frame.size.width / 2
view.clipsToBounds = true
当故事板中的 UILayoutConstraints 是固定宽度/高度时,将此代码放入 viewDidLoad 或 viewWillAppear 中没有问题。内置iOS9.3SDK,在iOS10等环境下运行良好
iOS10SDK 显示的帧大小与 Storyboard 中的固定大小完全不同,甚至达到 viewWillAppear 和 viewDidLayoutSubviews 等。我的选择是:
1) 在 viewDidAppear 中执行此操作(糟糕的解决方案) 2)硬编码cornerRadius(工作正常,但很糟糕)
这看起来像一个错误(因为在 Storyboard 中设置的固定宽度/高度不应该在没有控制台警告的情况下更改)。是它,还是现在这个代码有不同的地方? (附上测试代码截图)
【问题讨论】:
-
我所有的 IB 生成的视图在 viewDidLoad 和代码的许多其他部分都有新的未初始化帧大小 {1000,1000}。包括 cellForRowAtIndexPath
-
我发现直接使用约束宽度/高度而不是框架宽度高度是一个合理的解决方案。 stackoverflow.com/questions/39475456/…
-
嗨@Miro - 正是我所看到的(默认1000)。我也直接设置高度。我也遇到了与 NSLayoutConstraints 相关的问题,这意味着 Apple 在视图布局代码中更改了一堆东西 :-)
标签: autolayout ios10