ios – UIBezierPath:roundedRect:byRoundingCorners:cornerRadii:行为怪异

ios – UIBezierPath:roundedRect:byRoundingCorners:cornerRadii:行为怪异,第1张

概述我试图让一个按钮的两个角圆.如果我像这样选择.TopLeft和.BottomLeft: let bezierDisableAdsPath = UIBezierPath(roundedRect: disableAdsButton.bounds, byRoundingCorners: [UIRectCorner.TopLeft , UIRectCorner.BottomLeft] , cornerRa 我试图让一个按钮的两个角圆.如果我像这样选择.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

比代码工作得很漂亮.

如果我选择.topRight和. Bottomright是这样的:

let bezIErdisableAdsPath = UIBezIErPath(roundedRect: disableAdsbutton.bounds,byRoundingCorners: [UIRectCorner.topRight,UIRectCorner.Bottomright],4.0))        let maskAdsLayer = CAShapeLayer()        maskAdsLayer.frame = disableAdsbutton.bounds        maskAdsLayer.path = bezIErdisableAdsPath.CGPath        disableAdsbutton.layer.mask = maskAdsLayer

比我看不到圆角.这里发生了什么?

我已经尝试将maskAdsLayer添加为子视图,但它不起作用.

解决方法 如果您在vIEwDIDLoad中执行此 *** 作,此时可能尚未应用自动布局约束,因此按钮的框架可能未达到其最终值,因此disableAdsbutton.bounds可能不是您所期望的那样在那时候.因此,向右倒圆的角可能不可见.您可以通过在此代码运行的位置记录按钮的边界来确认这一点,然后在布局视图后再次查看它.

你可以通过推迟到vIEwDIDAppear或更好的vIEwDIDLayoutSubvIEws来解决这个问题.

总结

以上是内存溢出为你收集整理的ios – UIBezierPath:roundedRect:byRoundingCorners:cornerRadii:行为怪异全部内容,希望文章能够帮你解决ios – UIBezierPath:roundedRect:byRoundingCorners:cornerRadii:行为怪异所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1046601.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存