ฉันพยายามตั้งค่าสีเส้นขอบที่กำหนดเองของ UIView แบบเป็นโปรแกรมใน Swift
ฉันพยายามตั้งค่าสีเส้นขอบที่กำหนดเองของ UIView แบบเป็นโปรแกรมใน Swift
คำตอบ:
หากคุณใช้ 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
ในSwift 4คุณสามารถตั้งค่าสีและความกว้างของเส้นขอบเป็น UIControls โดยใช้โค้ดด้านล่าง
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คุณสามารถตั้งค่าความกว้างของเส้นขอบและสีเส้นขอบของ UIView ได้โดยใช้รหัสด้านล่าง
yourView.layer.borderWidth = 1
yourView.layer.borderColor = UIColor.red.cgColor
ใช้@IBDesignableและ@IBInspectableเพื่อทำเช่นเดียวกัน
สามารถใช้ซ้ำได้และแก้ไขได้ง่ายจากตัวสร้างอินเทอร์เฟซและการเปลี่ยนแปลงจะแสดงใน Storyboard ทันที
ปรับแต่งวัตถุในสตอรีบอร์ดให้เข้ากับคลาสนั้น ๆ
ข้อมูลโค้ด:
@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()
}
}
ช่วยให้แก้ไขได้ง่ายจาก Interface Builder:
@IBDesignable
และ@IBInspectable
ทั้งหมดทำงานได้ดีดังนั้นจึงควรมีวิธีสำหรับศุลกากรในการใช้ Colour Assets กับโหมดมืด / สว่างด้วย ~ มีใครรู้บ้างว่าจะบรรลุได้อย่างไร?
คุณสามารถเขียนส่วนขยายเพื่อใช้กับ UIViews ทั้งหมดเช่น UIButton, UILabel, UIImageView เป็นต้นคุณสามารถปรับแต่งวิธีการต่อไปนี้ได้ตามความต้องการของคุณ แต่ฉันคิดว่ามันจะใช้ได้ดีสำหรับคุณ
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
}
}
การใช้งาน:
btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)
Swift 5.2 , UIView + ส่วนขยาย
extension UIView {
public func addViewBorder(borderColor:CGColor,borderWith:CGFloat,borderCornerRadius:CGFloat){
self.layer.borderWidth = borderWith
self.layer.borderColor = borderColor
self.layer.cornerRadius = borderCornerRadius
}
}
คุณใช้ส่วนขยายนี้
yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)
รวดเร็ว 3
func borderColor(){
self.viewMenuItems.layer.cornerRadius = 13
self.viewMenuItems.layer.borderWidth = 1
self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}
เขียนรหัสในไฟล์ viewDidLoad()
self.view.layer.borderColor = anyColor().CGColor
และคุณสามารถตั้งค่าColor
ด้วยRGB
func anyColor() -> UIColor {
return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
}
เรียนรู้บางอย่างเกี่ยวกับ CALayer
ในUIKit
รวดเร็ว 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
เราสามารถสร้างวิธีการได้ เพียงแค่ใช้มัน
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