美文网首页
为uiview设置单边边框

为uiview设置单边边框

作者: ShineYangGod | 来源:发表于2019-06-12 11:33 被阅读0次

    原生的 UIKit 并没有提供设置单边边框(border)的功能,view.layer.borderColor和view.layer.borderWidth 会把上下左右的边框一起设置。所以想设置单边只能自己来实现了。

    画border线的思路很简单,其实就是画一条直线,把这条直线添加到 view的边缘即可。画直线的方法也有几种,有使用 UIKit 的 UIBezierPath实现的,有使用Core Graphics的。这里我使用UIBezierPath实现:
    大致实现如下:

    
    let line = UIBezierPath(rect: CGRect(x: 0, y: self.frame.size.height / 2, width: self.frame.size.width, height: 1))//实例化一条宽度为1的直线
    let lineShape = CAShapeLayer()//设置路径的画布
    lineShape.path = line.cgPath //设置画布的路径为贝塞尔曲线的路径
    lineShape.fillColor = UIColor.red.cgColor//设置颜色
    self.view.layer.addSublayer(lineShape)//添加画布的 layer
    

    我们可以把这些代码写在 draw方法上,当然,如果想让所有的 UIView 都有这个功能,我们可以为 UIView 添加 extension :

      public func setBoderLine(top:Bool,bottom:Bool,left:Bool,right:Bool,width:CGFloat,borderColor:UIColor){
            if top{
                let rect = CGRect(x: 0, y: 0, width: self.frame.size.width, height: width)
                drawBorder(rect: rect, color: borderColor)
            }
            if bottom {
                let rect = CGRect(x: 0, y: self.frame.size.height-width, width: self.frame.size.width, height: width)
                drawBorder(rect: rect, color: borderColor)
            }
            if left{
                let rect = CGRect(x: 0, y: 0, width: width, height: self.frame.size.height)
                drawBorder(rect: rect, color: borderColor)
            }
            if right{
                let rect = CGRect(x: self.frame.size.width - width, y:0 , width: width, height: self.frame.size.height)
                drawBorder(rect: rect, color: borderColor)
            }
        }
    

    在需要设置的地方调用:

     guestLabel.setBoderLine(top: false, bottom: false, left: false, right: true, width: 1, borderColor: UICOLOR_RGB16(rgbValue: 0xE0E1E2))
    

    相关文章

      网友评论

          本文标题:为uiview设置单边边框

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