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) 但它正在围绕观点的一边: 这是在tableView sectionHeader中,如果我向下滚动然后使用相同的代码向上舍入: 顶部折扣视角也使用相同的功能进行四舍五入. 感谢帮助. 更新 解决方法
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 } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |