我正在尝试使用下面的代码来绕顶角
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 } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。