经常会在业务中遇到只需要上部圆角的背景,常规方式有两种:
1.直接让设计师切图
2.自己画
先上代码
let v = UIView()
v.backgroundColor = .orange
// 圆角大小
let radius: CGFloat = 20;
// 圆角位置
let corner: UIRectCorner = [.topLeft, .topRight]
//frame可以先计算完成 避免圆角拉伸
let rect = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 310)
let path: UIBezierPath = UIBezierPath(roundedRect: rect, byRoundingCorners: corner, cornerRadii: CGSize(width: radius, height: radius))
let maskLayer: CAShapeLayer = CAShapeLayer()
maskLayer.frame = rect;
maskLayer.path = path.cgPath
v.layer.mask = maskLayer;
return v
上述还有小tips,swift中的option类型的枚举,并不是使用|
运算,而是采用集合的形式[.topLeft, .topRight]
效果图:
that's all~