Próbuję programowo ustawić niestandardowy kolor obramowania UIView w języku Swift.
Próbuję programowo ustawić niestandardowy kolor obramowania UIView w języku Swift.
Odpowiedzi:
Jeśli używasz 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
W Swift 4 możesz ustawić kolor i szerokość obramowania na UIControls za pomocą poniższego kodu.
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 , Możesz ustawić szerokość i kolor obramowania UIView za pomocą poniższego kodu.
yourView.layer.borderWidth = 1
yourView.layer.borderColor = UIColor.red.cgColor
Użyj @IBDesignable i @IBInspectable, aby zrobić to samo.
Są one wielokrotnego użytku, łatwo modyfikowalne z poziomu Interface Builder, a zmiany są natychmiast odzwierciedlane w Storyboard
Dopasuj obiekty w scenorysie do określonej klasy
Fragment kodu:
@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()
}
}
Umożliwia łatwą modyfikację z poziomu Interface Builder:
@IBDesignablei @IBInspectablewszystko działa dobrze, więc powinien istnieć sposób, aby organy celne mogły używać zasobów koloru również w trybie ciemny / jasny - każdy wie, jak to osiągnąć?
Możesz napisać rozszerzenie, aby używać go ze wszystkimi widokami UIV, np. UIButton, UILabel, UIImageView itp. Możesz dostosować moją następującą metodę zgodnie ze swoimi wymaganiami, ale myślę, że będzie dobrze działać dla Ciebie.
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
}
}
Stosowanie:
btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)
szybki 3
func borderColor(){
self.viewMenuItems.layer.cornerRadius = 13
self.viewMenuItems.layer.borderWidth = 1
self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}
Swift 5.2 , rozszerzenie UIView +
extension UIView {
public func addViewBorder(borderColor:CGColor,borderWith:CGFloat,borderCornerRadius:CGFloat){
self.layer.borderWidth = borderWith
self.layer.borderColor = borderColor
self.layer.cornerRadius = borderCornerRadius
}
}
Użyłeś tego rozszerzenia;
yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)
Wpisz kod w swoim viewDidLoad()
self.view.layer.borderColor = anyColor().CGColor
I możesz ustawić za ColorpomocąRGB
func anyColor() -> UIColor {
return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
}
Dowiedz się czegoś o CALayerwUIKit
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
Możemy stworzyć na to metodę. Po prostu go użyj.
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