这是以下代码的最终结果:
这是我的代码:
view.layer.cornerRadius = 0.5 * view.bounds.size.width
view.layer.masksToBounds = true
view.clipsToBounds = true
视图是红色的UIView。此代码放在viewWillLayoutSubviews和viewDidLayoutSubviews中(不在一起,但我都测试过它们。)
除此之外,还不清楚使用maskToBounds OR clipsToBounds。我不知道该使用什么以及何时使用上面的其中一个。我也测试了它。
绿色UIView还有clipToBounds活跃和圆角,但是如果我同时删除它们,我仍然会得到同样的效果......我希望有人可以提供帮助。 这只发生在我将UIView置于另一个UIView 中时。如果UIView没有父级,它可以工作(我得到了UIView四舍五入)。
编辑:GitHub链接:https://github.com/Jasperav/tests
答案 0 :(得分:1)
问题在于自动布局引擎实际完成所有布局计算的时间。
如果您将代码移至viewDidAppear
,您将会正确地看到"舍入"角落。
这是使用自定义视图的一种非常常见的情况。事实上,它很容易被用作" IBDesignable" class,所以你可以看到它在Interface Builder中呈现。
创建一个名为" RoundedView.swift"的新文件。使用此代码:
import UIKit
@IBDesignable
class RoundView: UIView {
override func layoutSubviews() {
super.layoutSubviews()
self.layer.cornerRadius = 0.5 * self.bounds.size.height
}
}
然后将该类分配给您想要舍入的视图。 Xcode将构建您的新类,它将在Interface Builder中显示如下: