CXTDT-426623 - Toggle - Drop Shadow on Knob

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-08-09 14:55:32 -05:00
parent 05c4effb98
commit c9abe39196
2 changed files with 51 additions and 4 deletions

View File

@ -50,6 +50,10 @@ open class ToggleView: Control, Changeable {
$0.isUserInteractionEnabled = false $0.isUserInteractionEnabled = false
} }
private let shadowLayer1 = CALayer()
private let shadowLayer2 = CALayer()
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Public Properties // MARK: - Public Properties
//-------------------------------------------------- //--------------------------------------------------
@ -136,6 +140,12 @@ open class ToggleView: Control, Changeable {
toggleView.setContentHuggingPriority(.required, for: .vertical) toggleView.setContentHuggingPriority(.required, for: .vertical)
setContentHuggingPriority(.required, for: .horizontal) setContentHuggingPriority(.required, for: .horizontal)
setContentHuggingPriority(.required, for: .vertical) setContentHuggingPriority(.required, for: .vertical)
//knobview dropshadow
// Update shadow layers frames to match the view's bounds
knobView.layer.insertSublayer(shadowLayer1, at: 0)
knobView.layer.insertSublayer(shadowLayer2, at: 0)
} }
/// Resets to default settings. /// Resets to default settings.
@ -180,8 +190,8 @@ open class ToggleView: Control, Changeable {
// MARK: - Toggle // MARK: - Toggle
//-------------------------------------------------- //--------------------------------------------------
private func constrainKnob(){ private func constrainKnob(){
self.knobLeadingConstraint?.isActive = false knobLeadingConstraint?.isActive = false
self.knobTrailingConstraint?.isActive = false knobTrailingConstraint?.isActive = false
if isOn { if isOn {
knobTrailingConstraint = toggleView.trailingAnchor.constraint(equalTo: knobView.trailingAnchor, constant: 2) knobTrailingConstraint = toggleView.trailingAnchor.constraint(equalTo: knobView.trailingAnchor, constant: 2)
knobLeadingConstraint = knobView.leadingAnchor.constraint(greaterThanOrEqualTo: toggleView.leadingAnchor) knobLeadingConstraint = knobView.leadingAnchor.constraint(greaterThanOrEqualTo: toggleView.leadingAnchor)
@ -191,13 +201,17 @@ open class ToggleView: Control, Changeable {
} }
knobTrailingConstraint?.isActive = true knobTrailingConstraint?.isActive = true
knobLeadingConstraint?.isActive = true knobLeadingConstraint?.isActive = true
self.layoutIfNeeded() setNeedsLayout()
layoutIfNeeded()
} }
private func updateToggle() { private func updateToggle() {
let toggleColor = toggleColorConfiguration.getColor(self) let toggleColor = toggleColorConfiguration.getColor(self)
let knobColor = knobColorConfiguration.getColor(self) let knobColor = knobColorConfiguration.getColor(self)
shadowLayer1.backgroundColor = knobColor.cgColor
shadowLayer2.backgroundColor = knobColor.cgColor
if disabled || !isAnimated { if disabled || !isAnimated {
toggleView.backgroundColor = toggleColor toggleView.backgroundColor = toggleColor
knobView.backgroundColor = knobColor knobView.backgroundColor = knobColor
@ -213,6 +227,39 @@ open class ToggleView: Control, Changeable {
}, completion: nil) }, completion: nil)
} }
} }
open override func layoutSubviews() {
super.layoutSubviews()
shadowLayer1.frame = knobView.bounds
shadowLayer2.frame = knobView.bounds
let shadowColor = VDSColor.paletteBlack.cgColor
// Drop Shadow 1
// color: black
// Radius (Blur): 10
// Width (x-offset): 0
// Height (y-offset): 1px
// Opacity: 0.24
shadowLayer1.cornerRadius = knobView.layer.cornerRadius
shadowLayer1.shadowColor = shadowColor
shadowLayer1.shadowOpacity = 0.24
shadowLayer1.shadowOffset = .init(width: 0, height: 1)
shadowLayer1.shadowRadius = 5.0
// Drop Shadow 2
// color: black
// Radius (Blur): 2
// Width (x-offset): 0
// Height (y-offset): 2px
// Opacity: 0.08
shadowLayer2.cornerRadius = knobView.layer.cornerRadius
shadowLayer2.shadowColor = shadowColor
shadowLayer2.shadowOpacity = 0.08
shadowLayer2.shadowOffset = .init(width: 0, height: 2)
shadowLayer2.shadowRadius = 2.0
}
} }
// MARK: AppleGuidlinesTouchable // MARK: AppleGuidlinesTouchable

View File

@ -1,7 +1,7 @@
1.0.39 1.0.39
======= =======
- CXTDT-423141 - Tabs - Selected Tab dark mode text color - CXTDT-423141 - Tabs - Selected Tab dark mode text color
- Badge Indicator update to latest specs from July - CXTDT-426623 - Toggle - Drop Shadow on Knob
1.0.38 1.0.38
======= =======