CornerRadius 未设置

Posted

技术标签:

【中文标题】CornerRadius 未设置【英文标题】:CornerRadius don't set 【发布时间】:2019-04-05 15:04:37 【问题描述】:

我正在尝试在左下角和右下角的 UIView 上圆角。

extension UIView     
    func roundBottom(raduis: CGFloat)
        let maskPath1 = UIBezierPath(roundedRect: bounds,
                                     byRoundingCorners: [.BottomRight, .BottomLeft],
                                     cornerRadii: CGSize(width: raduis, height: raduis))
        let maskLayer1 = CAShapeLayer()
        maskLayer1.frame = bounds
        maskLayer1.path = maskPath1.CGPath
        layer.mask = maskLayer1
    

并致电cell.bottomCorner.roundBottom(8)

但我明白了:

iPhone 5:

iPhone 6s:

iPhone 6s Plus:

【问题讨论】:

【参考方案1】:

您必须在每次视图更改其大小时更新掩码,因此理想情况下您应该在调用UIView.layoutSubviews 时更改它:

override func layoutSubviews() 
   super.layoutSubviews();
   // update mask

在扩展助手方法中这样做并不理想。您应该创建一个特定的类来处理大小变化。

【讨论】:

以上是关于CornerRadius 未设置的主要内容,如果未能解决你的问题,请参考以下文章

使用将 maskToBounds 设置为 true 和cornerRadius 不会更改视图

无法从静态资源设置 CornerRadius 值

在按钮模板上设置CornerRadius

根据子类中的 UIButton 大小设置cornerRadius 的最佳位置?

设置子视图的layer.cornerRadius后iOS UITableView滚动不顺畅[重复]

更改 UIView 的框架并更新cornerRadius