diff --git a/VDSSample/ViewControllers/DropShawdowViewController.swift b/VDSSample/ViewControllers/DropShawdowViewController.swift index 6540d52..6caf71c 100644 --- a/VDSSample/ViewControllers/DropShawdowViewController.swift +++ b/VDSSample/ViewControllers/DropShawdowViewController.swift @@ -31,9 +31,9 @@ class Slider: Control, UITextFieldDelegate { range.pinBottom() range.pinTrailing() + range.thumbTintColor = .systemBlue range.publisher(for: .valueChanged).sink { [weak self] slider in - self?.value = slider.value - self?.sendActions(for: .valueChanged) + self?.valueChanged(newValue: slider.value) }.store(in: &subscribers) } @@ -41,11 +41,15 @@ class Slider: Control, UITextFieldDelegate { textField.text = String(format: "%.2f", value) } + private func valueChanged(newValue: Float) { + value = newValue + sendActions(for: .valueChanged) + } + func textFieldShouldReturn(_ textField: UITextField) -> Bool { textField.resignFirstResponder() if let text = textField.text, let n = NumberFormatter().number(from: text) { - self.value = n.floatValue - print(self.value) + valueChanged(newValue: n.floatValue) } return true } @@ -57,11 +61,14 @@ class DropShadowViewController: BaseViewController { var viewLightColor: UIColor.VDSColor = .paletteGray65 { didSet { updateView() }} var viewDarkColor: UIColor.VDSColor = .backgroundPrimaryLight { didSet { updateView() }} + var viewRadiusRange = Slider() var opacityRange = Slider() var radiusRange = Slider() var offsetXRange = Slider() var offsetYRange = Slider() + var viewSize: CGFloat = 100.0 + lazy var dropShadowLightColorPickerSelectorView = { PickerSelectorView(title: "", picker: self.picker, @@ -89,8 +96,8 @@ class DropShadowViewController: BaseViewController { let spacer: Float = 50 override func viewDidLoad() { super.viewDidLoad() - component.widthAnchor.constraint(equalToConstant: 100).isActive = true - component.heightAnchor.constraint(equalToConstant: 100).isActive = true + component.widthAnchor.constraint(equalToConstant: viewSize).isActive = true + component.heightAnchor.constraint(equalToConstant: viewSize).isActive = true addContentTopView(view: .makeWrapper(for: component, edgeSpacing: Double(spacer)), edgeSpacing: 0.0) setupPicker() setupModel() @@ -100,6 +107,7 @@ class DropShadowViewController: BaseViewController { override func setupForm(){ super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) + addFormRow(label: "View Corner Radius", view: viewRadiusRange) addFormRow(label: "View Light", view: viewLightColorPickerSelectorView) addFormRow(label: "View Dark", view: viewDarkColorPickerSelectorView) addFormRow(label: "Shawdow Light", view: dropShadowLightColorPickerSelectorView) @@ -137,7 +145,13 @@ class DropShadowViewController: BaseViewController { offsetYRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in self?.updateView() }).store(in: &subscribers) - + + viewRadiusRange.maximumValue = Float(viewSize / 2) + viewRadiusRange.minimumValue = 0 + viewRadiusRange.value = 8.0 + viewRadiusRange.publisher(for: .valueChanged).sink(receiveValue: { [weak self] slider in + self?.updateView() + }).store(in: &subscribers) dropShadowLightColorPickerSelectorView.text = shadowLightColor.rawValue dropShadowDarkColorPickerSelectorView.text = shadowDarkColor.rawValue @@ -155,13 +169,13 @@ class DropShadowViewController: BaseViewController { let dropshadowColorConfiguration = SurfaceColorConfiguration(shadowLightColor.uiColor, shadowDarkColor.uiColor) let viewColorConfiguration = SurfaceColorConfiguration(viewLightColor.uiColor, viewDarkColor.uiColor) + component.layer.cornerRadius = CGFloat(viewRadiusRange.value) component.layer.masksToBounds = false component.backgroundColor = viewColorConfiguration.getColor(surface) component.layer.shadowColor = dropshadowColorConfiguration.getColor(surface).cgColor component.layer.shadowOpacity = Float(opacityRange.value) component.layer.shadowOffset = .init(width: CGFloat(offsetXRange.value), height: CGFloat(offsetYRange.value)) component.layer.shadowRadius = CGFloat(radiusRange.value) - component.layer.cornerRadius = 8 } func setupPicker(){