如何以编程方式设置UIView的自定义边框颜色?

Sha*_*rma 92 ios swift

我试图在Swift中以编程方式设置UIView的自定义边框颜色.

Sha*_*rma 188

如果你使用Swift 2.0+

self.yourView.layer.borderWidth = 1
self.yourView.layer.borderColor = UIColor(red:222/255, green:225/255, blue:227/255, alpha: 1).cgColor
Run Code Online (Sandbox Code Playgroud)

  • 你的两个版本有什么区别吗? (3认同)
  • 您不需要在 swift 3 中显式调用 init。 (2认同)

Par*_*shi 85

Swift 4中,您可以使用下面的代码将边框颜色和宽度设置为UIControls.

let yourColor : UIColor = UIColor( red: 0.7, green: 0.3, blue:0.1, alpha: 1.0 )
yourControl.layer.masksToBounds = true
yourControl.layer.borderColor = yourColor.CGColor
yourControl.layer.borderWidth = 1.0
Run Code Online (Sandbox Code Playgroud)

<Swift 4,您可以使用以下代码设置UIView的边框宽度和边框颜色.

yourView.layer.borderWidth = 1

yourView.layer.borderColor = UIColor.red.cgColor
Run Code Online (Sandbox Code Playgroud)


Sup*_*dar 15

使用@IBDesignable@IBInspectable也可以这样做.

它们是可重用的,可以从Interface Builder轻松修改,并且更改会立即反映在Storyboard中

使故事板中的对象符合特定类

代码片段:

@IBDesignable
class CustomView: UIView{

@IBInspectable var borderWidth: CGFloat = 0.0{

    didSet{

        self.layer.borderWidth = borderWidth
    }
}


@IBInspectable var borderColor: UIColor = UIColor.clear {

    didSet {

        self.layer.borderColor = borderColor.cgColor
    }
}

override func prepareForInterfaceBuilder() {

    super.prepareForInterfaceBuilder()
}

}
Run Code Online (Sandbox Code Playgroud)

允许从Interface Builder轻松修改:

Interface Builder


ikb*_*bal 13

Swift 5.2 , UIView+扩展

extension UIView {
    public func addViewBorder(borderColor:CGColor,borderWith:CGFloat,borderCornerRadius:CGFloat){
        self.layer.borderWidth = borderWith
        self.layer.borderColor = borderColor
        self.layer.cornerRadius = borderCornerRadius

    }
}
Run Code Online (Sandbox Code Playgroud)

您使用了此扩展程序;

yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)
Run Code Online (Sandbox Code Playgroud)


Sha*_*dul 12

您可以编写扩展名以将其与所有UIViews一起使用,例如.UIButton,UILabel,UIImageView等您可以根据您的要求自定义我的以下方法,但我认为它适合您.

extension UIView{

    func setBorder(radius:CGFloat, color:UIColor = UIColor.clearColor()) -> UIView{
        var roundView:UIView = self
        roundView.layer.cornerRadius = CGFloat(radius)
        roundView.layer.borderWidth = 1
        roundView.layer.borderColor = color.CGColor
        roundView.clipsToBounds = true
        return roundView
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)
Run Code Online (Sandbox Code Playgroud)

  • 您确定代码中的混合语言是个好主意吗? (10认同)

Dee*_*iya 8

迅捷3

func borderColor(){

    self.viewMenuItems.layer.cornerRadius = 13
    self.viewMenuItems.layer.borderWidth = 1
    self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}
Run Code Online (Sandbox Code Playgroud)


Mr.*_*ani 5

我们可以为它创建方法。只需使用它即可。

public func createBorderForView(color: UIColor, radius: CGFloat, width: CGFloat = 0.7) {
    self.layer.borderWidth = width
    self.layer.cornerRadius = radius
    self.layer.shouldRasterize = false
    self.layer.rasterizationScale = 2
    self.clipsToBounds = true
    self.layer.masksToBounds = true
    let cgColor: CGColor = color.cgColor
    self.layer.borderColor = cgColor
}
Run Code Online (Sandbox Code Playgroud)