0
我創建了一個快速的擴展,所以我可以在Interface Builder添加邊框到一個UIView:的UIView層 - 刪除一條邊界
@IBDesignable public extension UIView {
@IBInspectable var borderColor:UIColor? {
set {
layer.borderColor = newValue!.cgColor
}
get {
if let color = layer.borderColor {
return UIColor(cgColor: color)
}
else {
return nil
}
}
}
@IBInspectable var borderWidth:CGFloat {
set {
layer.borderWidth = newValue
}
get {
return layer.borderWidth
}
}
@IBInspectable var cornerRadius:CGFloat {
set {
layer.cornerRadius = newValue
clipsToBounds = newValue > 0
}
get {
return layer.cornerRadius
}
}
}
現在我需要刪除左側邊框,你怎麼做? 我曾嘗試以下(從下面的UIView基類繼承),以在上面用白色加層:
class BaseViewWithLayers: UIView {
var l: CALayer?
override func layoutSubviews() {
l!.frame = CGRect(x: 0, y: 0, width: 1, height: self.frame.size.height)
}
override func awakeFromNib() {
self.l = CALayer()
l?.borderColor = UIColor.red.cgColor
l?.borderWidth = 1
self.layer.insertSublayer(self.l!, above: self.layer)
// self.layer.addSublayer(self.l!)
}
}
請注意:它應該與各種視圖的運動的工作,這是爲什麼我使用`layoutSubviews()
我更喜歡添加一個圖層來隱藏一個邊框,而不是創建3個圖層。
基本上可以在頂部添加一個白色的圖層來隱藏左邊界?
你有什麼想法嗎? 謝謝
你知道如何更新子的CALayer所以它遵循約束?我已經創建了這個問題:https://stackoverflow.com/questions/45750882/constraints-and-sublayerscalayer-not-updating?noredirect=1#comment78459213_45750882 –
是的,我給你一個解決方案,請嘗試。 –