refactored dropshadow to use real code

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2024-04-19 09:53:12 -05:00
parent 21d7ee8e45
commit 64b823da48

View File

@ -353,7 +353,6 @@ public class ShadowView: View {
public var viewRadiusRange: CGFloat = 8.0 { didSet { setNeedsUpdate() }} public var viewRadiusRange: CGFloat = 8.0 { didSet { setNeedsUpdate() }}
private var shadowLayer1: CALayer = CALayer()
public var showShadow: Bool = true { didSet { setNeedsUpdate() }} public var showShadow: Bool = true { didSet { setNeedsUpdate() }}
public var opacityRange: CGFloat = 1.0 { didSet { setNeedsUpdate() }} public var opacityRange: CGFloat = 1.0 { didSet { setNeedsUpdate() }}
public var offsetXRange: CGFloat = 2.0 { didSet { setNeedsUpdate() }} public var offsetXRange: CGFloat = 2.0 { didSet { setNeedsUpdate() }}
@ -362,7 +361,6 @@ public class ShadowView: View {
public var shadowLightColor: UIColor.VDSColor = .backgroundPrimaryDark { didSet { setNeedsUpdate() }} public var shadowLightColor: UIColor.VDSColor = .backgroundPrimaryDark { didSet { setNeedsUpdate() }}
public var shadowDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { setNeedsUpdate() }} public var shadowDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { setNeedsUpdate() }}
private var shadowLayer2: CALayer = CALayer()
public var showShadow2: Bool = false { didSet { setNeedsUpdate() }} public var showShadow2: Bool = false { didSet { setNeedsUpdate() }}
public var opacityRange2: CGFloat = 1.0 { didSet { setNeedsUpdate() }} public var opacityRange2: CGFloat = 1.0 { didSet { setNeedsUpdate() }}
public var offsetXRange2: CGFloat = 2.0 { didSet { setNeedsUpdate() }} public var offsetXRange2: CGFloat = 2.0 { didSet { setNeedsUpdate() }}
@ -376,46 +374,60 @@ public class ShadowView: View {
width(constant: 100) width(constant: 100)
height(constant: 100) height(constant: 100)
// Add shadow layers as sublayers of the view's layer
layer.insertSublayer(shadowLayer1, at: 0)
layer.insertSublayer(shadowLayer2, at: 0)
} }
public override func updateView() { public override func updateView() {
super.updateView() super.updateView()
let viewColor = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor).getColor(surface) let viewColor = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor).getColor(surface)
backgroundColor = viewColor backgroundColor = viewColor
shadowLayer1.backgroundColor = viewColor.cgColor
shadowLayer2.backgroundColor = viewColor.cgColor
shadowLayer1.isHidden = !showShadow
shadowLayer2.isHidden = !showShadow2
setNeedsLayout() setNeedsLayout()
layoutIfNeeded() layoutIfNeeded()
} }
public override var backgroundColor: UIColor? {
didSet {
print("backgroundColor: \(backgroundColor?.hexString ?? "None")")
}
}
public override func layoutSubviews() { public override func layoutSubviews() {
super.layoutSubviews() super.layoutSubviews()
layer.cornerRadius = CGFloat(viewRadiusRange)
let dropshadowColor = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor).getColor(surface) let dropshadowColor = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor).getColor(surface)
let dropshadowColor2 = SurfaceColorConfiguration(shadowLightColor2.uiColor, shadowDarkColor2.uiColor).getColor(surface) let dropshadowColor2 = SurfaceColorConfiguration(shadowLightColor2.uiColor, shadowDarkColor2.uiColor).getColor(surface)
layer.cornerRadius = CGFloat(viewRadiusRange) var shadowConfigs = [DropShadowConfiguration]()
layer.masksToBounds = false
// Update shadow layers frames to match the view's bounds // Update shadow layers frames to match the view's bounds
shadowLayer1.frame = bounds if showShadow {
shadowLayer2.frame = bounds let shadow1Config = VDS.DropShadowConfiguration().with {
$0.shadowRadiusConfiguration = .init(viewRadiusRange, .zero)
shadowLayer1.cornerRadius = CGFloat(viewRadiusRange) $0.shadowColorConfiguration = SurfaceColorConfiguration(dropshadowColor, dropshadowColor).eraseToAnyColorable()
shadowLayer1.shadowColor = dropshadowColor.cgColor $0.shadowOpacityConfiguration = .init(opacityRange, .zero)
shadowLayer1.shadowOpacity = Float(opacityRange) $0.shadowOffsetConfiguration = .init(.init(width: offsetXRange, height: offsetYRange), .zero)
shadowLayer1.shadowOffset = .init(width: CGFloat(offsetXRange), height: CGFloat(offsetYRange)) $0.shadowRadiusConfiguration = .init(radiusRange, .zero)
shadowLayer1.shadowRadius = CGFloat(radiusRange) }
shadowConfigs.append(shadow1Config)
}
shadowLayer2.cornerRadius = CGFloat(viewRadiusRange) if showShadow2 {
shadowLayer2.shadowColor = dropshadowColor2.cgColor let shadow2Config = VDS.DropShadowConfiguration().with {
shadowLayer2.shadowOpacity = Float(opacityRange2) $0.shadowRadiusConfiguration = .init(viewRadiusRange, .zero)
shadowLayer2.shadowOffset = .init(width: CGFloat(offsetXRange2), height: CGFloat(offsetYRange2)) $0.shadowColorConfiguration = SurfaceColorConfiguration(dropshadowColor2, dropshadowColor2).eraseToAnyColorable()
shadowLayer2.shadowRadius = CGFloat(radiusRange2) $0.shadowOpacityConfiguration = .init(opacityRange2, .zero)
$0.shadowOffsetConfiguration = .init(.init(width: offsetXRange2, height: offsetYRange2), .zero)
$0.shadowRadiusConfiguration = .init(radiusRange2, .zero)
}
shadowConfigs.append(shadow2Config)
}
if shadowConfigs.count > 0 {
addDropShadows(shadowConfigs)
} else {
removeDropShadows()
}
} }
} }