refactored name of FontLabelAttribute/added UIView extension for anchors
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
a5cd93b71c
commit
d7f067ef8f
@ -9,6 +9,7 @@
|
||||
/* Begin PBXBuildFile section */
|
||||
5F21D7BF28DCEB3D003E7CD6 /* Useable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F21D7BE28DCEB3D003E7CD6 /* Useable.swift */; };
|
||||
5FC35BE328D51405004EBEAC /* Button.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC35BE228D51405004EBEAC /* Button.swift */; };
|
||||
EA0FC2C62914222900DF80B4 /* ButtonGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA0FC2C52914222900DF80B4 /* ButtonGroup.swift */; };
|
||||
EA1F266528B945070033E859 /* RadioSwatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA1F266128B945070033E859 /* RadioSwatch.swift */; };
|
||||
EA1F266628B945070033E859 /* RadioSwatchGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA1F266228B945070033E859 /* RadioSwatchGroup.swift */; };
|
||||
EA336171288B19200071C351 /* VDS.docc in Sources */ = {isa = PBXBuildFile; fileRef = EA336170288B19200071C351 /* VDS.docc */; };
|
||||
@ -57,6 +58,7 @@
|
||||
EAB1D2CF28ABEF2B00DAE764 /* Typography.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2CE28ABEF2B00DAE764 /* Typography.swift */; };
|
||||
EAB1D2E628AE842000DAE764 /* Publisher+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2E328AE842000DAE764 /* Publisher+Bind.swift */; };
|
||||
EAB1D2EA28AE84AA00DAE764 /* UIControlPublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB1D2E928AE84AA00DAE764 /* UIControlPublisher.swift */; };
|
||||
EAB5FED429267EB300998C17 /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB5FED329267EB300998C17 /* UIView.swift */; };
|
||||
EAC9257D29119B5400091998 /* TextLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC9257C29119B5400091998 /* TextLink.swift */; };
|
||||
EAC925832911B35400091998 /* TextLinkCaret.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC925822911B35300091998 /* TextLinkCaret.swift */; };
|
||||
EAC925842911C63100091998 /* Colorable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEDF28F49DB3003B3210 /* Colorable.swift */; };
|
||||
@ -70,7 +72,7 @@
|
||||
EAF7F0A2289AFB3900B287F5 /* Errorable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0A1289AFB3900B287F5 /* Errorable.swift */; };
|
||||
EAF7F0A4289B017C00B287F5 /* LabelAttributeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0A3289B017C00B287F5 /* LabelAttributeModel.swift */; };
|
||||
EAF7F0A6289B0CE000B287F5 /* Resetable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0A5289B0CE000B287F5 /* Resetable.swift */; };
|
||||
EAF7F0AB289B13FD00B287F5 /* FontLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0AA289B13FD00B287F5 /* FontLabelAttribute.swift */; };
|
||||
EAF7F0AB289B13FD00B287F5 /* TypographicalStyleLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0AA289B13FD00B287F5 /* TypographicalStyleLabelAttribute.swift */; };
|
||||
EAF7F0AD289B142900B287F5 /* StrikeThroughLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0AC289B142900B287F5 /* StrikeThroughLabelAttribute.swift */; };
|
||||
EAF7F0AF289B144C00B287F5 /* UnderlineLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0AE289B144C00B287F5 /* UnderlineLabelAttribute.swift */; };
|
||||
EAF7F0B1289B177F00B287F5 /* ColorLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF7F0B0289B177F00B287F5 /* ColorLabelAttribute.swift */; };
|
||||
@ -95,6 +97,7 @@
|
||||
/* Begin PBXFileReference section */
|
||||
5F21D7BE28DCEB3D003E7CD6 /* Useable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Useable.swift; sourceTree = "<group>"; };
|
||||
5FC35BE228D51405004EBEAC /* Button.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Button.swift; sourceTree = "<group>"; };
|
||||
EA0FC2C52914222900DF80B4 /* ButtonGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonGroup.swift; sourceTree = "<group>"; };
|
||||
EA1F266128B945070033E859 /* RadioSwatch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadioSwatch.swift; sourceTree = "<group>"; };
|
||||
EA1F266228B945070033E859 /* RadioSwatchGroup.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadioSwatchGroup.swift; sourceTree = "<group>"; };
|
||||
EA33616C288B19200071C351 /* VDS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = VDS.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@ -145,6 +148,7 @@
|
||||
EAB1D2CE28ABEF2B00DAE764 /* Typography.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Typography.swift; sourceTree = "<group>"; };
|
||||
EAB1D2E328AE842000DAE764 /* Publisher+Bind.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Publisher+Bind.swift"; sourceTree = "<group>"; };
|
||||
EAB1D2E928AE84AA00DAE764 /* UIControlPublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIControlPublisher.swift; sourceTree = "<group>"; };
|
||||
EAB5FED329267EB300998C17 /* UIView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIView.swift; sourceTree = "<group>"; };
|
||||
EAC9257C29119B5400091998 /* TextLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLink.swift; sourceTree = "<group>"; };
|
||||
EAC925822911B35300091998 /* TextLinkCaret.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLinkCaret.swift; sourceTree = "<group>"; };
|
||||
EAC925872911C9DE00091998 /* TextEntryField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextEntryField.swift; sourceTree = "<group>"; };
|
||||
@ -157,7 +161,7 @@
|
||||
EAF7F0A1289AFB3900B287F5 /* Errorable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Errorable.swift; sourceTree = "<group>"; };
|
||||
EAF7F0A3289B017C00B287F5 /* LabelAttributeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeModel.swift; sourceTree = "<group>"; };
|
||||
EAF7F0A5289B0CE000B287F5 /* Resetable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Resetable.swift; sourceTree = "<group>"; };
|
||||
EAF7F0AA289B13FD00B287F5 /* FontLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FontLabelAttribute.swift; sourceTree = "<group>"; };
|
||||
EAF7F0AA289B13FD00B287F5 /* TypographicalStyleLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypographicalStyleLabelAttribute.swift; sourceTree = "<group>"; };
|
||||
EAF7F0AC289B142900B287F5 /* StrikeThroughLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StrikeThroughLabelAttribute.swift; sourceTree = "<group>"; };
|
||||
EAF7F0AE289B144C00B287F5 /* UnderlineLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnderlineLabelAttribute.swift; sourceTree = "<group>"; };
|
||||
EAF7F0B0289B177F00B287F5 /* ColorLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ColorLabelAttribute.swift; sourceTree = "<group>"; };
|
||||
@ -202,6 +206,7 @@
|
||||
EA0FC2BE2912D18200DF80B4 /* Buttons */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EA0FC2C42914221800DF80B4 /* ButtonGroup */,
|
||||
5FC35BE128D513EB004EBEAC /* Button */,
|
||||
EAC9257E29119B5D00091998 /* TextLink */,
|
||||
EAC925812911B34300091998 /* TextLinkCaret */,
|
||||
@ -209,6 +214,14 @@
|
||||
path = Buttons;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EA0FC2C42914221800DF80B4 /* ButtonGroup */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EA0FC2C52914222900DF80B4 /* ButtonGroup.swift */,
|
||||
);
|
||||
path = ButtonGroup;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EA1F265F28B945070033E859 /* RadioSwatch */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@ -306,6 +319,7 @@
|
||||
EA33623D2892EE950071C351 /* UIDevice.swift */,
|
||||
EAF7F0B4289C126F00B287F5 /* UILabel.swift */,
|
||||
EAF7F0B6289C12A600B287F5 /* UITapGestureRecognizer.swift */,
|
||||
EAB5FED329267EB300998C17 /* UIView.swift */,
|
||||
);
|
||||
path = Extensions;
|
||||
sourceTree = "<group>";
|
||||
@ -485,7 +499,7 @@
|
||||
EA978EC4291D6AFE00ACC883 /* AnyLabelAttribute.swift */,
|
||||
EAF7F13228A2A16500B287F5 /* AttachmentLabelAttributeModel.swift */,
|
||||
EAF7F0B0289B177F00B287F5 /* ColorLabelAttribute.swift */,
|
||||
EAF7F0AA289B13FD00B287F5 /* FontLabelAttribute.swift */,
|
||||
EAF7F0AA289B13FD00B287F5 /* TypographicalStyleLabelAttribute.swift */,
|
||||
EAA5EEB428ECBFB4003B3210 /* ImageLabelAttribute.swift */,
|
||||
EAF7F0AC289B142900B287F5 /* StrikeThroughLabelAttribute.swift */,
|
||||
EAA5EEB628ECC03A003B3210 /* ToolTipLabelAttribute.swift */,
|
||||
@ -647,6 +661,7 @@
|
||||
EAC9258F2911C9DE00091998 /* EntryField.swift in Sources */,
|
||||
EAB1D2EA28AE84AA00DAE764 /* UIControlPublisher.swift in Sources */,
|
||||
EAF7F13328A2A16500B287F5 /* AttachmentLabelAttributeModel.swift in Sources */,
|
||||
EA0FC2C62914222900DF80B4 /* ButtonGroup.swift in Sources */,
|
||||
EA89200628B526D6006B9984 /* CheckboxGroup.swift in Sources */,
|
||||
EAD8D2C128BFDE8B006EB6A6 /* UIGestureRecognizer+Publisher.swift in Sources */,
|
||||
EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */,
|
||||
@ -660,7 +675,7 @@
|
||||
EA1F266528B945070033E859 /* RadioSwatch.swift in Sources */,
|
||||
EA4DB18528CA967F00103EE3 /* SelectorGroupHandlerBase.swift in Sources */,
|
||||
EA89200228AECF2A006B9984 /* UIButton+Publisher.swift in Sources */,
|
||||
EAF7F0AB289B13FD00B287F5 /* FontLabelAttribute.swift in Sources */,
|
||||
EAF7F0AB289B13FD00B287F5 /* TypographicalStyleLabelAttribute.swift in Sources */,
|
||||
EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */,
|
||||
EA336171288B19200071C351 /* VDS.docc in Sources */,
|
||||
EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */,
|
||||
@ -669,6 +684,7 @@
|
||||
EA3361B6288B2A410071C351 /* Control.swift in Sources */,
|
||||
5F21D7BF28DCEB3D003E7CD6 /* Useable.swift in Sources */,
|
||||
EAF7F0B7289C12A600B287F5 /* UITapGestureRecognizer.swift in Sources */,
|
||||
EAB5FED429267EB300998C17 /* UIView.swift in Sources */,
|
||||
EA3361AD288B26190071C351 /* DataTrackable.swift in Sources */,
|
||||
EA33623E2892EE950071C351 /* UIDevice.swift in Sources */,
|
||||
EA3362302891EB4A0071C351 /* Fonts.swift in Sources */,
|
||||
|
||||
@ -8,8 +8,9 @@
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
public struct FontLabelAttribute: LabelAttributeModel {
|
||||
public func isEqual(_ equatable: FontLabelAttribute) -> Bool {
|
||||
public struct TypographicalStyleLabelAttribute: LabelAttributeModel {
|
||||
|
||||
public func isEqual(_ equatable: TypographicalStyleLabelAttribute) -> Bool {
|
||||
return id == equatable.id
|
||||
&& range == equatable.range
|
||||
&& color == equatable.color
|
||||
@ -26,6 +27,7 @@ public struct FontLabelAttribute: LabelAttributeModel {
|
||||
public var color: UIColor
|
||||
public var textPosition: TextPosition
|
||||
public var lineBreakMode: NSLineBreakMode
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Initializer
|
||||
//--------------------------------------------------
|
||||
@ -78,5 +80,4 @@ public struct FontLabelAttribute: LabelAttributeModel {
|
||||
attributedString.addAttribute(.paragraphStyle, value: paragraph, range: range)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
118
VDS/Extensions/UIView.swift
Normal file
118
VDS/Extensions/UIView.swift
Normal file
@ -0,0 +1,118 @@
|
||||
//
|
||||
// UIView.swift
|
||||
// VDS
|
||||
//
|
||||
// Created by Matt Bruce on 11/17/22.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
extension UIView {
|
||||
public func pin(_ view: UIView, with edges: UIEdgeInsets = UIEdgeInsets.zero) {
|
||||
leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: edges.left).isActive = true
|
||||
trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -edges.right).isActive = true
|
||||
topAnchor.constraint(equalTo: view.topAnchor, constant: edges.top).isActive = true
|
||||
bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -edges.bottom).isActive = true
|
||||
}
|
||||
|
||||
public func pinToSuperView(_ edges: UIEdgeInsets = UIEdgeInsets.zero) {
|
||||
if let superview {
|
||||
pin(superview, with: edges)
|
||||
}
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func height(_ constant: CGFloat) -> Self {
|
||||
heightAnchor.constraint(equalToConstant: constant).isActive = true
|
||||
return self
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func heightGreaterThanEqual(_ constant: CGFloat) -> Self {
|
||||
heightAnchor.constraint(greaterThanOrEqualToConstant: constant).isActive = true
|
||||
return self
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func heightLessThanEqual(_ constant: CGFloat) -> Self {
|
||||
heightAnchor.constraint(lessThanOrEqualToConstant: constant).isActive = true
|
||||
return self
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func width(_ constant: CGFloat) -> Self {
|
||||
widthAnchor.constraint(equalToConstant: constant).isActive = true
|
||||
return self
|
||||
}
|
||||
|
||||
|
||||
@discardableResult
|
||||
public func widthGreaterThanEqual(_ constant: CGFloat) -> Self {
|
||||
widthAnchor.constraint(greaterThanOrEqualToConstant: constant).isActive = true
|
||||
return self
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func widthLessThanEqual(_ constant: CGFloat) -> Self {
|
||||
widthAnchor.constraint(lessThanOrEqualToConstant: constant).isActive = true
|
||||
return self
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func pinTop(_ constant: CGFloat = 0.0) -> Self {
|
||||
return pinTop(nil, constant)
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func pinTop(_ anchor: NSLayoutYAxisAnchor? = nil, _ constant: CGFloat = 0.0) -> Self {
|
||||
let found: NSLayoutYAxisAnchor? = anchor ?? superview?.topAnchor
|
||||
if let found {
|
||||
topAnchor.constraint(equalTo: found, constant: constant).isActive = true
|
||||
}
|
||||
return self
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func pinBottom(_ constant: CGFloat = 0.0) -> Self {
|
||||
return pinBottom(nil, constant)
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func pinBottom(_ anchor: NSLayoutYAxisAnchor? = nil, _ constant: CGFloat = 0.0) -> Self {
|
||||
let found: NSLayoutYAxisAnchor? = anchor ?? superview?.bottomAnchor
|
||||
if let found {
|
||||
bottomAnchor.constraint(equalTo: found, constant: -constant).isActive = true
|
||||
}
|
||||
return self
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func pinLeading(_ constant: CGFloat = 0.0) -> Self {
|
||||
return pinLeading(nil, constant)
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func pinLeading(_ anchor: NSLayoutXAxisAnchor? = nil, _ constant: CGFloat = 0.0) -> Self {
|
||||
let found: NSLayoutXAxisAnchor? = anchor ?? superview?.leadingAnchor
|
||||
if let found {
|
||||
leadingAnchor.constraint(equalTo: found, constant: constant).isActive = true
|
||||
}
|
||||
return self
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func pinTrailing(_ constant: CGFloat = 0.0) -> Self {
|
||||
return pinTrailing(nil, constant)
|
||||
}
|
||||
|
||||
@discardableResult
|
||||
public func pinTrailing(_ anchor: NSLayoutXAxisAnchor? = nil, _ constant: CGFloat = 0.0) -> Self {
|
||||
let found: NSLayoutXAxisAnchor? = anchor ?? superview?.trailingAnchor
|
||||
if let found {
|
||||
trailingAnchor.constraint(equalTo: found, constant: -constant).isActive = true
|
||||
}
|
||||
return self
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user