This question already has an answer here:
Custom Rounding corners on UIView
                                
                                    (1个答案)
                                
                        
                                3年前关闭。
            
                    
我正在尝试使用UIBezierPath圆角化我的标签和按钮。问题是,当我使用它时,似乎忽略了告诉标签和按钮一直延伸到视图末端的约束。我如何获得与此相关的约束?这里有和没有UIBezierPath代码:

ios - 当我尝试使用UIBezierPath拐角时,如何弄乱我的约束条件?-LMLPHP

ios - 当我尝试使用UIBezierPath拐角时,如何弄乱我的约束条件?-LMLPHP

码:

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
    }

最佳答案

我猜想在调用viewDidLoad之后,视图的框架会发生变化。您所看到的圆角视图的大小可能是情节提要中视图的宽度。

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

另外,您可以研究制作一个@IBDesignable UIView扩展,该扩展使您可以直接从情节提要中舍入任何视图的角落。那是“很好/最好”的选择,尽管这也很好。

10-08 01:01