updated documentation

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-08-28 18:15:19 -05:00
parent 08fd42fcb9
commit ba9e5f912f
2 changed files with 21 additions and 4 deletions

View File

@ -42,6 +42,8 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
//--------------------------------------------------
private var initialSetupPerformed = false
private var edgeInsets: UIEdgeInsets { textStyle.edgeInsets }
private var tapGesture: UITapGestureRecognizer? {
willSet {
if let tapGesture = tapGesture, newValue == nil {
@ -99,11 +101,13 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
/// Key of whether or not updateView() is called in setNeedsUpdate()
open var shouldUpdateView: Bool = true
/// Determines if the label should use its own attributedText property instead of rendering the attributedText propert
/// based of other local properties, such as textStyle, textColor, surface, etc... The default value is false.
open var useAttributedText: Bool = false
/// Will determine if a scaled font should be used for the font.
open var useScaledFont: Bool = false { didSet { setNeedsUpdate() }}
/// Current Surface and this is used to pass down to child objects that implement Surfacable
open var surface: Surface = .light { didSet { setNeedsUpdate() }}
/// Array of LabelAttributeModel objects used in rendering the text.
@ -112,18 +116,21 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
/// TextStyle used on the this label.
open var textStyle: TextStyle = .defaultStyle { didSet { setNeedsUpdate() }}
open var edgeInsets: UIEdgeInsets { textStyle.edgeInsets }
/// The alignment of the text within the label.
open var textPosition: TextPosition = .left { didSet { setNeedsUpdate() }}
open var userInfo = [String: Primitive]()
/// Number of lines the label can render out, default is set to 0.
open override var numberOfLines: Int { didSet { setNeedsUpdate() }}
/// Line break mode for the label, default is set to word wrapping.
open override var lineBreakMode: NSLineBreakMode { didSet { setNeedsUpdate() }}
/// Text that will be used in the label.
override open var text: String? {
didSet {
useAttributedText = false
attributes = nil
setNeedsUpdate()
}
@ -135,6 +142,8 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
//--------------------------------------------------
// MARK: - Configuration Properties
//--------------------------------------------------
/// Color configuration use for text color. This is a configuration that will provide a color based
/// of local properties such as surface and isEnabled.
open var textColorConfiguration: AnyColorable = ViewColorConfiguration().with {
$0.setSurfaceColors(VDSColor.interactiveDisabledOnlight, VDSColor.interactiveDisabledOndark, forDisabled: true)
$0.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forDisabled: false)
@ -180,7 +189,6 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
setNeedsUpdate()
}
/// Used to make changes to the View based off a change events or from local properties.
open func updateView() {
if !useAttributedText {
if let text = text {
@ -215,15 +223,18 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
//--------------------------------------------------
// MARK: - Overrides
//--------------------------------------------------
/// We are drawing using edgeInsets based off the textStyle.
open override func drawText(in rect: CGRect) {
super.drawText(in: rect.inset(by: edgeInsets))
}
/// We are applying action attributes after the views layout to ensure correct positioning of the text.
open override func layoutSubviews() {
super.layoutSubviews()
applyActions()
}
/// Addig custom accessibillty actions from the collection of attributes.
open override func accessibilityActivate() -> Bool {
guard let accessibleActions = accessibilityCustomActions else { return false }

View File

@ -30,10 +30,12 @@ open class Line: View {
//--------------------------------------------------
// MARK: - Enums
//--------------------------------------------------
/// Style of the line that will be displayed.
public enum Style: String, CaseIterable {
case primary, secondary
}
/// Orientation that will be displayed.
public enum Orientation: String, CaseIterable {
case horizontal, vertical
}
@ -41,8 +43,10 @@ open class Line: View {
//--------------------------------------------------
// MARK: - Public Properties
//--------------------------------------------------
/// Style of the line that will be displayed.
open var style: Style = .primary { didSet { setNeedsUpdate() } }
/// Allows to render the line vertically.
open var orientation: Orientation = .horizontal { didSet { setNeedsUpdate() } }
/// The natural size for the receiving view, considering only properties of the view itself.
@ -57,6 +61,8 @@ open class Line: View {
//--------------------------------------------------
// MARK: - Configuration
//--------------------------------------------------
/// Color configuration use for text color. This is a configuration that will provide a color based
/// of local properties such as style and surface.
open var lineViewColorConfiguration: AnyColorable = {
let config = KeyedColorConfiguration<Line, Style>(keyPath: \.style)
config.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forKey: .primary)