使用AutoLayout将角半径应用于UIView的顶部

时间:2016-07-02 16:06:49

标签: ios swift autolayout

我扩展UIView以添加round()方法以将角半径应用于特定角落:

extension UIView {
    func round(corners: UIRectCorner, radius: CGFloat) -> CAShapeLayer {
        let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSizeMake(radius, radius))
        let mask = CAShapeLayer()
        mask.path = path.CGPath
        self.layer.mask = mask

        return mask
    }
}

在一个视图控制器中,我有以下层次结构:

  • StackView
    • 的UIView

约束被设置为top,leading,trailing为0 我的问题是当我运行(仅)5.5英寸的屏幕时,UIView并没有像我应用角落半径时那样一直拉伸:

override func viewDidLayoutSubviews() {
    self.greenview.round([.TopLeft, .TopRight], radius: CGFloat(10))
}

如果我删除此行,它可以正常工作。我不是在正确的地方称这种方法吗?

以下是问题的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:3)

尝试将其放入' layoutSubviews'在调用super方法之后。它更适合于依赖于边界的UI更改。