// // Helper.swift // VDSSample // // Created by Matt Bruce on 11/18/22. // import Foundation import VDS import UIKit extension UIView { public static func makeWrapper(for view: UIView, edgeSpacing: CGFloat = 0.0) -> UIView { let wrapper = UIView().with { $0.translatesAutoresizingMaskIntoConstraints = false } wrapper.addSubview(view) view .pinTop(edgeSpacing) .pinBottom(edgeSpacing) .pinLeading(edgeSpacing) view.trailingAnchor.constraint(lessThanOrEqualTo: wrapper.trailingAnchor).isActive = true return wrapper } } extension ButtonBase { func labelPublisher(_ label: UILabel){ onClick = { control in let newText = "\(control.text!) clicked - " if let labelText = label.text { let components = labelText.components(separatedBy: " - ") let last: String = (components.last ?? "0").trimmingCharacters(in: .whitespaces) let count = Int(last)! label.text = "\(newText)\(count+1)" } else { label.text = "\(newText)1" } print("clicked me") } } } extension BaseViewController { func makeButton(_ text: String, label: UILabel) -> Button { return Button().with{ $0.text = text $0.labelPublisher(label) } } func makeTextLink(_ text: String, label: UILabel) -> TextLink { return TextLink().with{ $0.text = text $0.labelPublisher(label) } } func makeTextLinkCaret(_ text: String, label: UILabel) -> TextLinkCaret { return TextLinkCaret().with{ $0.text = text $0.labelPublisher(label) } } }