Estou tentando definir a cor da borda personalizada do UIView programaticamente em Swift.
Estou tentando definir a cor da borda personalizada do UIView programaticamente em Swift.
Respostas:
Se você usa 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
No Swift 4, você pode definir a cor e largura da borda para UIControls usando o código abaixo.
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 , você pode definir a largura e cor da borda do UIView usando o código abaixo.
yourView.layer.borderWidth = 1
yourView.layer.borderColor = UIColor.red.cgColor
Use @IBDesignable e @IBInspectable para fazer o mesmo.
Eles são reutilizáveis, facilmente modificáveis no Interface Builder e as alterações são refletidas imediatamente no Storyboard
Adapte os objetos do storyboard à classe específica
Fragmento de código:
@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()
}
}
Permite fácil modificação do Interface Builder:
@IBDesignablee @IBInspectabletudo funcione bem, então deve haver uma maneira para os costumes usarem recursos de cor com o modo claro / escuro também - alguém sabe como fazer isso?
Você pode escrever uma extensão para usá-lo com todos os UIViews, por exemplo. UIButton, UILabel, UIImageView etc. Você pode personalizar meu método a seguir de acordo com sua necessidade, mas acho que funcionará bem para você.
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
}
}
Uso:
btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)
rápido 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
}
}
Você usou esta extensão;
yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)
Escreva o código em seu viewDidLoad()
self.view.layer.borderColor = anyColor().CGColor
E você pode definir ColorcomRGB
func anyColor() -> UIColor {
return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
}
Aprenda algo sobre CALayeremUIKit
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
Podemos criar um método para isso. Basta usá-lo.
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