pot*_*ato 5 rounded-corners cashapelayer ios uibezierpath
我正在尝试使一个按钮的2个角变圆。如果我选择.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
Run Code Online (Sandbox Code Playgroud)
比代码工作得更好。
如果我选择.TopRight和。像这样的BottomRight:
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
Run Code Online (Sandbox Code Playgroud)
比我看不到圆角 这里发生了什么?
我已经尝试过将maskAdsLayer添加为子视图,但是它不起作用。
如果你正在做这viewDidLoad,自动布局限制可能没有被这个点开始应用,因此你的按钮的框架可能不会在其最终值,因此disableAdsButton.bounds可能不是你希望它是在该点什么。因此,向右圆角的角可能不可见。您可以通过bounds在此代码运行时记录按钮的 ,然后在布局视图后再次查看它来确认这一点。
您可以通过将其推迟到viewDidAppear或更好地解决此问题viewDidLayoutSubviews。
| 归档时间: |
|
| 查看次数: |
2114 次 |
| 最近记录: |