Ich versuche, die benutzerdefinierte Rahmenfarbe von UIView programmgesteuert in Swift festzulegen.
Ich versuche, die benutzerdefinierte Rahmenfarbe von UIView programmgesteuert in Swift festzulegen.
Antworten:
Wenn Sie Swift 2.0+ verwenden
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 können Sie die Rahmenfarbe und -breite mithilfe des folgenden Codes auf UIControls einstellen.
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 , Sie können die Rahmenbreite und die Rahmenfarbe von UIView mit dem folgenden Code einstellen.
yourView.layer.borderWidth = 1
yourView.layer.borderColor = UIColor.red.cgColor
Verwenden Sie dazu @IBDesignable und @IBInspectable .
Sie sind wiederverwendbar und können über den Interface Builder leicht geändert werden. Die Änderungen werden sofort im Storyboard angezeigt
Passen Sie die Objekte im Storyboard an die jeweilige Klasse an
Code-Auszug:
@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()
}
}
Ermöglicht die einfache Änderung von Interface Builder:
@IBDesignable
und @IBInspectable
alles funktioniert gut, also sollte es für den Zoll eine Möglichkeit geben, Color Assets auch im Dunkel- / Hell-Modus zu verwenden ~ weiß jemand, wie man das erreichen kann?
Sie können eine Erweiterung schreiben, um sie mit allen UIViews zu verwenden, z. UIButton, UILabel, UIImageView usw. Sie können meine folgende Methode gemäß Ihren Anforderungen anpassen, aber ich denke, sie wird für Sie gut funktionieren.
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
}
}
Verwendung:
btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)
schnell 3
func borderColor(){
self.viewMenuItems.layer.cornerRadius = 13
self.viewMenuItems.layer.borderWidth = 1
self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}
Swift 5.2 , UIView + Erweiterung
extension UIView {
public func addViewBorder(borderColor:CGColor,borderWith:CGFloat,borderCornerRadius:CGFloat){
self.layer.borderWidth = borderWith
self.layer.borderColor = borderColor
self.layer.cornerRadius = borderCornerRadius
}
}
Sie haben diese Erweiterung verwendet.
yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)
Schreiben Sie den Code in Ihre viewDidLoad()
self.view.layer.borderColor = anyColor().CGColor
Und Sie können einstellen , Color
mitRGB
func anyColor() -> UIColor {
return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
}
Erfahren Sie etwas über CALayer
inUIKit
schnell 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
Wir können eine Methode dafür erstellen. Verwenden Sie es einfach.
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