web-dev-qa-db-fra.com

Comment définir la couleur de bordure personnalisée de UIView par programme?

J'essaie de définir la couleur de la bordure personnalisée d'UIView par programme dans Swift.

89
Shashi Verma

Si vous utilisez 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
186
Shashi Verma

Dans Swift 4, vous pouvez définir la couleur et la largeur de la bordure sur UIControls à l'aide du code ci-dessous.

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, Vous pouvez définir la largeur et la couleur de la bordure d'UIView à l'aide du code ci-dessous.

yourView.layer.borderWidth = 1

yourView.layer.borderColor = UIColor.red.cgColor
79
Paras Joshi

Utilisez @ IBDesignable et @ IBInspectable pour faire de même.

Ils sont réutilisables, facilement modifiables à partir d'Interface Builder et les modifications sont immédiatement reflétées dans le Storyboard.

Conformer les objets du storyboard à la classe particulière

Extrait de code:

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

}

Permet une modification facile depuis Interface Builder:

Interface Builder

15
Supratik Majumdar

Vous pouvez écrire une extension pour l'utiliser avec toutes les UIViews, par exemple. UIButton, UILabel, UIImageView, etc. Vous pouvez personnaliser la méthode suivante en fonction de vos besoins, mais je pense que cela fonctionnera bien pour vous.

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
    }
}

Usage:

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

Swift 3

func borderColor(){

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

Swift 3.

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
Chathura Jayanaka

Nous pouvons créer une méthode pour cela. Il suffit de l'utiliser.

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
Mr.Javed Multani

Écrivez le code dans votre viewDidLoad()

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

Et vous pouvez définir Color avec RGB

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

En savoir plus sur CALayer dans UIKit

3
Ethan Joe

Swift 5.2, IView + Extension

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

    }
}

Vous avez utilisé cette extension;

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

Swift 3.0

       groundTrump.layer.borderColor = UIColor.red.cgColor