加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift中UIView的圆顶角落

发布时间:2020-12-14 04:28:55 所属栏目:百科 来源:网络整理
导读:我正在尝试使用下面的代码来绕顶角 func roundCorners(corners:UIRectCorner,radius: CGFloat) { let path = UIBezierPath(roundedRect: self.bounds,byRoundingCorners: corners,cornerRadii: CGSize(width: radius,height: radius)) let maskLayer = CASha
我正在尝试使用下面的代码来绕顶角

func roundCorners(corners:UIRectCorner,radius: CGFloat) {
        let path = UIBezierPath(roundedRect: self.bounds,byRoundingCorners: corners,cornerRadii: CGSize(width: radius,height: radius))
        let maskLayer = CAShapeLayer()
        maskLayer.frame = self.bounds
        maskLayer.path = path.cgPath
        self.layer.mask = maskLayer
    }

使用myView.roundCorners(corner:[.topLeft,.topRight],radius:radius)

但它正在围绕观点的一边:
?

enter image description here

这是在tableView sectionHeader中,如果我向下滚动然后使用相同的代码向上舍入:
?

enter image description here

顶部折扣视角也使用相同的功能进行四舍五入.

感谢帮助.

更新
如果我修复视图上的宽度,那么它工作正常.

解决方法

iOS 11引入了maskedCorners,可以获得更平滑,质量更好的结果.您仍然可以在函数调用中使用UIRectCorner并将其转换为CACornerMask:

Swift 4.2:

extension UIView {

    func roundCorners(_ corners: UIRectCorner,radius: CGFloat) {
        if #available(iOS 11.0,*) {
            clipsToBounds = true
            layer.cornerRadius = radius
            layer.maskedCorners = CACornerMask(rawValue: corners.rawValue)
        } else {
            let path = UIBezierPath(roundedRect: bounds,height: radius))
            let mask = CAShapeLayer()
            mask.path = path.cgPath
            layer.mask = mask
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读