gpt4 book ai didi

ios - UIBezierPath: roundedRect: byRoundingCorners: cornerRadii: 行为很奇怪

转载 作者:可可西里 更新时间:2023-11-01 04:43:37 25 4
gpt4 key购买 nike

我正在尝试使按钮的两个角变圆。如果我像这样选择 .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] , cornerRadii: CGSizeMake(4.0, 4.0))

let maskAdsLayer = CAShapeLayer()
maskAdsLayer.frame = disableAdsButton.bounds
maskAdsLayer.path = bezierDisableAdsPath.CGPath
disableAdsButton.layer.mask = maskAdsLayer

比我看到没有圆角。这是怎么回事?

我已经尝试将 maskAdsLayer 添加为 subview ,但它不起作用。

最佳答案

如果您在 viewDidLoad 中执行此操作,此时可能尚未应用自动布局约束,因此您的按钮框架可能未处于其最终值,因此 disableAdsButton.bounds 可能不是您当时期望的那样。因此,向右圆化的角可能不可见。您可以通过在这段代码运行时记录按钮的 bounds 来确认这一点,然后在布局 View 后再次查看它。

您可以通过将其推迟到 viewDidAppear 或更好的 viewDidLayoutSubviews 来解决此问题。

关于ios - UIBezierPath: roundedRect: byRoundingCorners: cornerRadii: 行为很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31923822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com