我正在尝试使用UIBezierPath围绕我的标签和按钮的角落。问题是,当我使用它时,它似乎忽略了我的约束,它告诉标签和按钮一直延伸到视图的末尾。如何获得约束来使用它?这里有和没有UIBezierPath代码:
代码:
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
}
答案 0 :(得分:1)
我猜测在调用viewDidLoad后视图的框架会发生变化。您看到的圆角视图的大小可能是故事板中视图的宽度。
尝试将代码放在viewDidLayoutSubviews中。这似乎是代码生存的更合适的地方。
或者,您可以考虑制作一个@IBDesignable UIView扩展,让您直接从故事板中绕过任何视图的角。这是'不错/最好'的选择,虽然这也很好。