ios swift 3 xcode8 beta 圆角 imageView

Posted

技术标签:

【中文标题】ios swift 3 xcode8 beta 圆角 imageView【英文标题】:ios swift 3 xcode8 beta rounded imageView 【发布时间】:2016-08-15 11:39:03 【问题描述】:

在我的项目中,我使用以下代码将图像制作成圆形:

profileImage.layer.cornerRadius = profileImage.frame.size.width / 2
profileImage.clipsToBounds = true

我还为我的图像使用约束以使其成为width = hight,以及其他约束。

在将我的项目升级到 xcode 8 beta 和 swift 3 之后。我设置为圆角的所有图像视图都消失了,当我删除使其圆角的代码或删除所有限制它们再次出现。 但我仍然需要将它们四舍五入。任何人都可以帮我解决这个问题。 谢谢

【问题讨论】:

在调试器中查看profileImage.frame.size.width的值是多少。那时布局可能还没有完成。因此,拐角半径可能设置为无效值。您是否也同时升级到了 ios 10? Apple 还在发行说明中指出新的 IB 文件格式存在问题(大部分已在 beta 5 中修复)。我的故事板中的视图和约束不断变化。 使用当前版本的 xcode 它工作得很好,升级到 xcode beta 5 后,我设置的所有图像都消失了。我总是确保宽度 = 高度。我使用约束来设置它。 尝试将此代码移至 viewDidLayoutSubviews(),因为 viewDidLoad() 处的宽度可能与应用约束后不同。 【参考方案1】:

我遇到了同样的问题,解决方法是在修改图层之前移动一行代码。 尝试应用布局更改:

self.view.layoutIfNeeded()

在您的代码之前:

profileImage.layer.cornerRadius = profileImage.frame.size.width/2
profileImage.clipsToBounds = true

将与框架/图层相关的代码放入viewDidLayoutSubviews() 方法中:

override func viewDidLayoutSubviews() 

    profileImage.layer.cornerRadius = profileImage.frame.size.width/2
    profileImage.clipsToBounds = true


【讨论】:

非常感谢佩德鲁安。它工作得很好。 刚刚浪费了整整一天的时间来解决这个问题:| 在哪里写 self.view.layoutIfNeeded() ? 写完这段代码后,imageview 没有变圆 override func viewDidLayoutSubviews() profileImage.layer.cornerRadius = profileImage.frame.size.width/2 profileImage.clipsToBounds = true

以上是关于ios swift 3 xcode8 beta 圆角 imageView的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3(Xcode 8 beta 6)localizedStringWithFormat

Xcode 8 beta 6 swift 3 本地化CaseInsensitiveCompare

“无法将类型 'String' 的值分配给类型 'AnyObject?'”,Swift 3,Xcode 8 beta 6

Xcode 8 beta 6 AnyObject Swift 3 变化

Swift 3 / Xcode 8 beta 6 中未调用 UIApplicationShortcutItem 的 AppDelegate 函数

用于捕获 QR 码的代码在 Xcode8 和 Swift3 中似乎效果不佳