added more view extensions

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-05-19 14:49:01 -05:00
parent af82966bad
commit 3625db96bf

View File

@ -176,10 +176,66 @@ extension UIView {
extension CALayer {
func remove(layerName: String) {
sublayers?.forEach({ layer in
guard let sublayers = sublayers else {
return
}
sublayers.forEach({ layer in
if layer.name?.hasPrefix(layerName) ?? false {
layer.removeFromSuperlayer()
}
})
}
}
extension UIView {
public func addBorder(side: UIRectEdge, width: CGFloat, color: UIColor) {
let layerName = borderLayerName(for: side)
layer.remove(layerName: layerName)
let borderLayer = CALayer()
borderLayer.backgroundColor = color.cgColor
borderLayer.name = layerName
switch side {
case .left:
borderLayer.frame = CGRect(x: 0, y: 0, width: width, height: frame.height)
case .right:
borderLayer.frame = CGRect(x: frame.width - width, y: 0, width: width, height: frame.height)
case .top:
borderLayer.frame = CGRect(x: 0, y: 0, width: frame.width, height: width)
case .bottom:
borderLayer.frame = CGRect(x: 0, y: frame.height - width, width: frame.width, height: width)
default:
break
}
layer.addSublayer(borderLayer)
}
public func removeBorders() {
layer.borderWidth = 0
layer.borderColor = nil
layer.remove(layerName: borderLayerName(for: .top))
layer.remove(layerName: borderLayerName(for: .left))
layer.remove(layerName: borderLayerName(for: .right))
layer.remove(layerName: borderLayerName(for: .bottom))
}
private func borderLayerName(for side: UIRectEdge) -> String {
switch side {
case .left:
return "leftBorderLayer"
case .right:
return "rightBorderLayer"
case .top:
return "topBorderLayer"
case .bottom:
return "bottomBorderLayer"
default:
return ""
}
}
}