Как настроить пользовательский цвет границы UIView программно?

Я пытаюсь установить пользовательский цвет границы UIView программно в Swift.

+84
источник поделиться
10 ответов

Если вы используете 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
+179
источник

В 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

<Swift 4, Вы можете установить ширину границы UIView и цвет границы, используя код ниже.

yourView.layer.borderWidth = 1

yourView.layer.borderColor = UIColor.red.cgColor
+76
источник

Используйте @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

+15
источник

Вы можете написать расширение, чтобы использовать его со всеми 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)
+12
источник

swift 3

func borderColor(){

    self.viewMenuItems.layer.cornerRadius = 13
    self.viewMenuItems.layer.borderWidth = 1
    self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}
+8
источник

Введите код в 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

+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
+3
источник

Мы можем создать метод для этого. Просто используйте это.

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
}
+3
источник

Swift 3.0

       groundTrump.layer.borderColor = UIColor.red.cgColor
+2
источник

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

    }
}

Вы использовали это расширение;

yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос