我正在使用下面的代码
来绕过顶角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(corners:[.topLeft, .topRight], radius: radius)
这是在tableView sectionHeader中,如果我向下滚动然后使用相同的代码向上舍入:
并且使用相同功能对顶部折扣视角进行舍入。
谢谢你的帮助。
更新 如果我在视图上修复宽度,那么它可以正常工作。
答案 0 :(得分:3)
在@Paolo的帮助下解决了这个问题,下面是工作代码。
Swift 3.2
extension UIView {
func roundCorners(corners:UIRectCorner, radius: CGFloat) {
DispatchQueue.main.async {
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
}
}
}
用于调用此函数使用下面的行并提及要舍入的角落
self.myView.roundCorners(corners: [.topLeft, .topRight, .bottomLeft, .bottomRight], radius: 8.0)