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

时间:2015-04-17 13:41:06

标签: ios swift

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

11 个答案:

答案 0 :(得分:177)

如果您使用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

答案 1 :(得分:76)

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

<强>&LT; Swift 4 ,您可以使用以下代码设置UIView的边框宽度和边框颜色。

yourView.layer.borderWidth = 1

yourView.layer.borderColor = UIColor.red.cgColor

答案 2 :(得分:15)

使用 @IBDesignable @IBInspectable 执行相同的操作。

它们可以重复使用,可以从Interface Builder轻松修改,并且更改会立即反映在故事板中

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

代码段:

@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()
}

}

允许从Interface Builder轻松修改

Interface Builder

答案 3 :(得分: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
    }
}

用法:

btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)

答案 4 :(得分:8)

swift 3

func borderColor(){

    self.viewMenuItems.layer.cornerRadius = 13
    self.viewMenuItems.layer.borderWidth = 1
    self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}

答案 5 :(得分:3)

将代码写入viewDidLoad()

self.view.layer.borderColor = anyColor().CGColor

您可以使用Color

设置RGB
func anyColor() -> UIColor {
    return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
}

CALayer

中了解UIKit的内容

答案 6 :(得分:3)

swift 3.0

self.uiTextView.layer.borderWidth = 0.5
    self.txtItemShortDes.layer.borderColor = UIColor(red:205.0/255.0, green:205.0/255.0, blue:205.0/255.0, alpha: 1.0).cgColor

答案 7 :(得分:3)

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

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
  <div class="main-div">
    <img src="" />
    <div class="text">bla bla</div>
    <a class="button-a">Link 1</a>
    <a class="button-b">Link 2</a>
  </div>
  <div class="main-div">
    <img src="" />
    <div class="text">bla bla</div>
    <a class="button-a">Link 1</a>
    <a class="button-b">Link 2</a>
  </div>
  <div class="main-div">
    <img src="" />
    <div class="text">bla bla</div>
    <a class="button-a">Link 1</a>
    <a class="button-b">Link 2</a>
  </div>

答案 8 :(得分:2)

Swift 3.0

       groundTrump.layer.borderColor = UIColor.red.cgColor

答案 9 :(得分:1)

Swift 5.2 UIView + Extension

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

    }
}

您使用了该扩展名;

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

答案 10 :(得分:1)

Swift 5*

我,总是使用视图扩展来使视图角变圆,设置边框颜色和宽度,这对我来说是最方便的方法。只需复制并粘贴此代码并在属性检查器中控制这些属性即可。

extension UIView {
    @IBInspectable
    var cornerRadius: CGFloat {
        get {
            return layer.cornerRadius
        }
        set {
            layer.cornerRadius = newValue
        }
    }
    
    @IBInspectable
    var borderWidth: CGFloat {
        get {
            return layer.borderWidth
        }
        set {
            layer.borderWidth = newValue
        }
    }
    
    @IBInspectable
    var borderColor: UIColor? {
        get {
            if let color = layer.borderColor {
                return UIColor(cgColor: color)
            }
            return nil
        }
        set {
            if let color = newValue {
                layer.borderColor = color.cgColor
            } else {
                layer.borderColor = nil
            }
        }
    }
}
相关问题