美文网首页
设置带边框的不同尺寸的圆角

设置带边框的不同尺寸的圆角

作者: 异乡人_4f2a | 来源:发表于2021-01-26 16:27 被阅读0次

设置如图红色框里面的圆角样式,带边框:

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

    }

}

相关文章

  • Image

    直接圆角图片 设置圆角图片度数 设置圆角图片带灰色圆角边框 设置圆角图片带灰色圆角边框带阴影

  • 设置带边框的不同尺寸的圆角

    设置如图红色框里面的圆角样式,带边框: extension UIView { //各圆角大小 struct...

  • CSS边框圆角--跟着李南江学编程

    1.什么是边框圆角? 就是把矩形边框变成圆角边框,就叫做边框圆角。 2.设置边框圆角的格式 2.1 border-...

  • 玩转CALayer视觉效果

    圆角: cornerRadius 设置圆角的半径 边框: borderWidth 和borderColor 设置边...

  • tableView setion cell加边框圆角

    最近项目UI需求tableViewCell 带圆角边框,自己写了下像平常那样去设置圆角边框行不通网上差了一下自己又...

  • 边框相关样式

    border-radius(边框圆角) 该属性用于设置边框圆角,属性值为圆角半径,当设置一个时为值为四个角的圆角半...

  • CALayer

    1. 获取View的CALayer 设置边框宽度 设置边框颜色 设置圆角 设置内容 Question: 这样设置完...

  • css3常用小结

    边框:1.边框圆角:border-radius;只设置一个数值时 边框的四个圆角像素都为xx;设置两个数值: 对应...

  • CSS3-边框属性

    CSS3中支持使用border-radius设置边框的圆角. 设置边框图片 border-image 可以设置边框...

  • 设置样式

    1.div设置边框和圆角

网友评论

      本文标题:设置带边框的不同尺寸的圆角

      本文链接:https://www.haomeiwen.com/subject/khggzktx.html