我正在尝试将按钮的两个角变成圆形。如果我像这样选择 .TopLeft 和 .BottomLeft:
let bezierDisableAdsPath = UIBezierPath(roundedRect: disableAdsButton.bounds, byRoundingCorners: [UIRectCorner.TopLeft , UIRectCorner.BottomLeft] , cornerRadii: CGSizeMake(4.0, 4.0))
let maskAdsLayer = CAShapeLayer()
maskAdsLayer.frame = disableAdsButton.bounds
maskAdsLayer.path = bezierDisableAdsPath.CGPath
disableAdsButton.layer.mask = maskAdsLayer
比代码运行得更漂亮。
如果我选择 .Top Right 和 .右下角是这样的:
let bezierDisableAdsPath = UIBezierPath(roundedRect: disableAdsButton.bounds, byRoundingCorners: [UIRectCorner.TopRight , UIRectCorner.BottomRight] , cornerRadii: CGSizeMake(4.0, 4.0))
let maskAdsLayer = CAShapeLayer()
maskAdsLayer.frame = disableAdsButton.bounds
maskAdsLayer.path = bezierDisableAdsPath.CGPath
disableAdsButton.layer.mask = maskAdsLayer
比我看不到圆角。这里发生了什么?
我已经尝试添加 maskAdsLayer 作为子视图,但它不起作用。
如果您正在执行此操作viewDidLoad
,此时可能尚未应用自动布局约束,因此按钮的框架可能未达到其最终值,因此disableAdsButton.bounds
那时可能不是您所期望的那样。因此,向右圆化的角可能不可见。您可以通过记录来确认这一点bounds
运行此代码时按钮的视图,然后在布局视图后再次查看它。
您可以通过推迟此问题直到viewDidAppear
或更好,viewDidLayoutSubviews
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)