我不能得到这个UIView轮

时间:2017-05-14 20:28:07

标签: ios iphone uiview

这是以下代码的最终结果:

enter image description here

这是我的代码:

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

1 个答案:

答案 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中显示如下:

enter image description here