J'essaie de définir la couleur de la bordure personnalisée d'UIView par programme dans Swift.
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
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
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:
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)
Swift 3
func borderColor(){
self.viewMenuItems.layer.cornerRadius = 13
self.viewMenuItems.layer.borderWidth = 1
self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}
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
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
}
É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
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)
Swift 3.0
groundTrump.layer.borderColor = UIColor.red.cgColor