Sto cercando di impostare il colore del bordo personalizzato di UIView a livello di codice in Swift.
Sto cercando di impostare il colore del bordo personalizzato di UIView a livello di codice in Swift.
Risposte:
Se usi 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
In Swift 4 puoi impostare il colore e la larghezza del bordo su UIControls utilizzando il codice sottostante.
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 , puoi impostare la larghezza e il colore del bordo di UIView utilizzando il codice sottostante.
yourView.layer.borderWidth = 1
yourView.layer.borderColor = UIColor.red.cgColor
Usa @IBDesignable e @IBInspectable per fare lo stesso.
Sono riutilizzabili, facilmente modificabili da Interface Builder e le modifiche si riflettono immediatamente nello Storyboard
Conforma gli oggetti nello storyboard alla classe particolare
Snippet di codice:
@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()
}
}
Consente una facile modifica da Interface Builder:
@IBDesignable
e @IBInspectable
tutto funziona bene, quindi dovrebbe esserci un modo per la dogana di utilizzare le risorse colore anche con la modalità luce / buio ~ qualcuno sa come ottenerlo?
Puoi scrivere un'estensione per usarla con tutte le UIVview es. UIButton, UILabel, UIImageView ecc. Puoi personalizzare il mio seguente metodo secondo le tue esigenze, ma penso che funzionerà bene per te.
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
}
}
Utilizzo:
btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)
rapido 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
}
}
Hai usato questa estensione;
yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)
Scrivi il codice nel tuo file viewDidLoad()
self.view.layer.borderColor = anyColor().CGColor
E puoi impostare Color
conRGB
func anyColor() -> UIColor {
return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
}
Impara qualcosa su CALayer
inUIKit
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
Possiamo creare un metodo per questo. Usalo semplicemente.
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