当我尝试使用UIBezierPath圆角时,我的约束怎么会搞砸了?

时间:2016-07-09 21:25:56

标签: ios swift uibezierpath

我正在尝试使用UIBezierPath围绕我的​​标签和按钮的角落。问题是,当我使用它时,它似乎忽略了我的约束,它告诉标签和按钮一直延伸到视图的末尾。如何获得约束来使用它?这里有和没有UIBezierPath代码:

With

Without

代码:

override func viewDidLoad() {
        super.viewDidLoad()

        let pathEULALabel = UIBezierPath(roundedRect:EULALabel.bounds, byRoundingCorners:[.TopLeft, .TopRight], cornerRadii: CGSizeMake(20, 20))
        let maskLayerEULALabel = CAShapeLayer()
        maskLayerEULALabel.path = pathEULALabel.CGPath
        EULALabel.layer.mask = maskLayerEULALabel

        let pathAcceptButton = UIBezierPath(roundedRect:acceptButton.bounds, byRoundingCorners:[.BottomLeft, .BottomRight], cornerRadii: CGSizeMake(20, 20))
        let maskLayerAcceptButton = CAShapeLayer()
        maskLayerAcceptButton.path = pathAcceptButton.CGPath
        acceptButton.layer.mask = maskLayerAcceptButton
    }

1 个答案:

答案 0 :(得分:1)

我猜测在调用viewDidLoad后视图的框架会发生变化。您看到的圆角视图的大小可能是故事板中视图的宽度。

尝试将代码放在viewDidLayoutSubviews中。这似乎是代码生存的更合适的地方。

或者,您可以考虑制作一个@IBDesignable UIView扩展,让您直接从故事板中绕过任何视图的角。这是'不错/最好'的选择,虽然这也很好。