J'essaie de définir la couleur de bordure personnalisée d'UIView par programmation dans Swift.
J'essaie de définir la couleur de bordure personnalisée d'UIView par programmation dans Swift.
Réponses:
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 en utilisant le 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 du constructeur d'interface et les changements sont immédiatement reflétés dans le storyboard
Conformez 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:
@IBDesignable
et @IBInspectable
tout fonctionne bien, il devrait donc y avoir un moyen pour les douanes d'utiliser les ressources de couleur avec le mode sombre / clair également ~ n'importe qui sait comment y parvenir?
Vous pouvez écrire une extension pour l'utiliser avec tous les UIViews, par exemple. UIButton, UILabel, UIImageView etc. Vous pouvez personnaliser ma méthode suivante selon 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)
rapide 3
func borderColor(){
self.viewMenuItems.layer.cornerRadius = 13
self.viewMenuItems.layer.borderWidth = 1
self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}
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
}
}
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)
Écrivez le code dans votre viewDidLoad()
self.view.layer.borderColor = anyColor().CGColor
Et vous pouvez définir Color
avecRGB
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 quelque chose CALayer
enUIKit
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
Nous pouvons créer une méthode pour cela. Utilisez-le simplement.
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
}
Swift 3.0
groundTrump.layer.borderColor = UIColor.red.cgColor