设置如图红色框里面的圆角样式,带边框:
extension UIView {
//各圆角大小
struct CornerRadii {
vartopLeft:CGFloat=0
vartopRight:CGFloat=0
varbottomLeft:CGFloat=0
varbottomRight:CGFloat=0
}
//切圆角函数绘制线条
func createPathWithRoundedRect( bounds:CGRect,cornerRadii:CornerRadii) ->CGPath{
let minX = bounds.minX
let minY = bounds.minY
let maxX = bounds.maxX
let maxY = bounds.maxY
//获取四个圆心
let topLeftCenterX = minX+ cornerRadii.topLeft
let topLeftCenterY = minY+cornerRadii.topLeft
let topRightCenterX = maxX-cornerRadii.topRight
let topRightCenterY = minY+cornerRadii.topRight
let bottomLeftCenterX = minX + cornerRadii.bottomLeft
let bottomLeftCenterY = maxY - cornerRadii.bottomLeft
let bottomRightCenterX = maxX- cornerRadii.bottomRight
let bottomRightCenterY = maxY-cornerRadii.bottomRight
//虽然顺时针参数是YES,在iOS中的UIView中,这里实际是逆时针
let path :CGMutablePath = CGMutablePath();
//顶 左
path.addArc(center:CGPoint(x: topLeftCenterX, y: topLeftCenterY), radius: cornerRadii.topLeft, startAngle:CGFloat.pi, endAngle:CGFloat.pi*3/2, clockwise:false)
//顶右
path.addArc(center:CGPoint(x: topRightCenterX, y: topRightCenterY), radius: cornerRadii.topRight, startAngle:CGFloat.pi*3/2, endAngle:0, clockwise:false)
//底右
path.addArc(center:CGPoint(x: bottomRightCenterX, y: bottomRightCenterY), radius: cornerRadii.bottomRight, startAngle:0, endAngle:CGFloat.pi/2, clockwise:false)
//底左
path.addArc(center:CGPoint(x: bottomLeftCenterX, y: bottomLeftCenterY), radius: cornerRadii.bottomLeft, startAngle:CGFloat.pi/2, endAngle:CGFloat.pi, clockwise:false)
path.closeSubpath();
returnpath;
}
//MARK:添加4个不同尺寸的圆角(可以设置边框)
func addCorner(cornerRadii:CornerRadii, size:CGSize, borderColor:UIColor, borderWidth:CGFloat) {
let rect =CGRect(origin:CGPoint(x:0, y:0), size: size)
let path =createPathWithRoundedRect(bounds: rect, cornerRadii:cornerRadii)
let shapLayer =CAShapeLayer()
shapLayer.frame= rect
shapLayer.path= path
self.layer.mask= shapLayer
//设置边框
let borderLayer =CAShapeLayer()
borderLayer.path= path
borderLayer.fillColor=UIColor.clear.cgColor
borderLayer.strokeColor= borderColor.cgColor
borderLayer.lineWidth= borderWidth
borderLayer.frame= rect
self.layer.addSublayer(borderLayer)
}
//MARK:添加4个不同尺寸的圆角(不可以设置边框)
func addCorner(cornerRadii:CornerRadii, size:CGSize) {
let rect =CGRect(origin:CGPoint(x:0, y:0), size: size)
let path =createPathWithRoundedRect(bounds: rect, cornerRadii:cornerRadii)
let shapLayer =CAShapeLayer()
shapLayer.frame= rect
shapLayer.path= path
self.layer.mask= shapLayer
}
}
网友评论