Tôi đang cố gắng đặt màu viền tùy chỉnh của UIView theo lập trình trong Swift.
Tôi đang cố gắng đặt màu viền tùy chỉnh của UIView theo lập trình trong Swift.
Câu trả lời:
Nếu bạn sử dụng 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
Trong Swift 4, bạn có thể đặt màu và chiều rộng đường viền thành UIControls bằng cách sử dụng mã bên dưới.
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 , Bạn có thể đặt chiều rộng đường viền và màu đường viền của UIView bằng cách sử dụng mã bên dưới.
yourView.layer.borderWidth = 1
yourView.layer.borderColor = UIColor.red.cgColor
Sử dụng @IBDesignable và @IBInspectable để làm tương tự.
Chúng có thể tái sử dụng, dễ dàng sửa đổi từ Trình tạo giao diện và các thay đổi được phản ánh ngay lập tức trong Bảng phân cảnh
Biến đổi các đối tượng trong bảng phân cảnh thành lớp cụ thể
Đoạn mã:
@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()
}
}
Cho phép sửa đổi dễ dàng từ Trình tạo giao diện:
@IBDesignable
và @IBInspectable
tất cả đều hoạt động tốt, vì vậy cần có cách để hải quan sử dụng Tài sản màu với cả chế độ tối / sáng ~ có ai biết làm thế nào có thể đạt được nó không?
Bạn có thể viết một phần mở rộng để sử dụng nó với tất cả các UIViews, ví dụ. UIButton, UILabel, UIImageView, v.v. Bạn có thể tùy chỉnh phương pháp sau của tôi theo yêu cầu của bạn, nhưng tôi nghĩ nó sẽ hoạt động tốt cho bạn.
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
}
}
Sử dụng:
btnLogin.setBorder(7, color: UIColor.lightGrayColor())
imgViewUserPick.setBorder(10)
nhanh chóng 3
func borderColor(){
self.viewMenuItems.layer.cornerRadius = 13
self.viewMenuItems.layer.borderWidth = 1
self.viewMenuItems.layer.borderColor = UIColor.white.cgColor
}
Swift 5.2 , UIView + Tiện ích mở rộng
extension UIView {
public func addViewBorder(borderColor:CGColor,borderWith:CGFloat,borderCornerRadius:CGFloat){
self.layer.borderWidth = borderWith
self.layer.borderColor = borderColor
self.layer.cornerRadius = borderCornerRadius
}
}
Bạn đã sử dụng tiện ích mở rộng này;
yourView.addViewBorder(borderColor: #colorLiteral(red: 0.6, green: 0.6, blue: 0.6, alpha: 1), borderWith: 1.0, borderCornerRadius: 20)
Viết mã trong viewDidLoad()
self.view.layer.borderColor = anyColor().CGColor
Và bạn có thể đặt Color
vớiRGB
func anyColor() -> UIColor {
return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 1.0)
}
Tìm hiểu điều gì đó về CALayer
trongUIKit
nhanh chóng 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
Chúng tôi có thể tạo phương pháp cho nó. Đơn giản chỉ cần sử dụng nó.
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