Merge branch 'bugfix/atomic_vds_label' into 'release/11_4_0'

refactored atomic label

### Summary
There were some manual settings happening into the Atomic Label with font and textColor.  These changes were pushed down into VDS.Label to handle generically and there was some code that needed to be deleted due to this change.

### JIRA Ticket
https://onejira.verizon.com/browse/ONEAPP-4349

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1066
This commit is contained in:
Hedden, Kyle Matthew 2024-03-08 22:55:17 +00:00
commit f53847372a
2 changed files with 3 additions and 64 deletions

View File

@ -46,14 +46,6 @@ public typealias ActionBlock = () -> ()
return !text.isEmpty || !attributedText.string.isEmpty return !text.isEmpty || !attributedText.string.isEmpty
} }
open override var textColor: UIColor! {
didSet {
if let textColor {
textColorConfiguration = SurfaceColorConfiguration(textColor, textColor).eraseToAnyColorable()
}
}
}
//------------------------------------------------------ //------------------------------------------------------
// MARK: - Convenience Setter For objective-C // MARK: - Convenience Setter For objective-C
//------------------------------------------------------ //------------------------------------------------------
@ -190,29 +182,7 @@ public typealias ActionBlock = () -> ()
} }
@objc public func resetAttributeStyle() { @objc public func resetAttributeStyle() {
/* setNeedsUpdate()
* This is to address a reuse issue with iOS 13 and up.
* Even if you set text & attributedText to nil, the moment you set text with a value,
* attributedText will hold a dirty value from a previously reused cell even if reset() is
* appropriately called.
* Only other reference found of issue: https://www.thetopsites.net/article/58142205.shtml
*/
if let text = text, !text.isEmpty {
//create the primary string
let mutableText = NSMutableAttributedString.mutableText(for: text,
textStyle: textStyle,
useScaledFont: useScaledFont,
textColor: textColorConfiguration.getColor(self),
alignment: textAlignment,
lineBreakMode: lineBreakMode)
if let attributes = attributes {
mutableText.apply(attributes: attributes)
}
self.attributedText = mutableText
}
} }
public func viewModelDidUpdate() { public func viewModelDidUpdate() {
@ -229,7 +199,6 @@ public typealias ActionBlock = () -> ()
} }
if let style = viewModel.fontStyle?.vdsTextStyle() { if let style = viewModel.fontStyle?.vdsTextStyle() {
font = style.font
textStyle = style textStyle = style
} else if let fontName = viewModel.fontName { } else if let fontName = viewModel.fontName {
// there is a TextStyle.defaultStyle // there is a TextStyle.defaultStyle
@ -237,9 +206,8 @@ public typealias ActionBlock = () -> ()
if let fontSize { if let fontSize {
standardFontSize = fontSize standardFontSize = fontSize
} }
if let customStyle = style(for: fontName, pointSize: fontSize ?? standardFontSize), customStyle != textStyle { if let newFont = UIFont(name: fontName, size: fontSize ?? standardFontSize) {
font = customStyle.font font = newFont
textStyle = customStyle
} }
} }
@ -256,26 +224,6 @@ public typealias ActionBlock = () -> ()
} }
} }
/// See if the font that is currently set matches a VDS Font and if so grab the matching TextStyle or create custom TextStyle that
/// that the Label will use moving forward.
private func checkforFontChange() {
guard let customStyle = style(for: font.fontName, pointSize: font.pointSize), customStyle != textStyle
else { return }
textStyle = customStyle
}
private func style(for fontName: String, pointSize: CGFloat) -> TextStyle? {
guard let vdsFont = Font.from(fontName: fontName),
let customStyle = TextStyle.style(from: vdsFont, pointSize: pointSize)
else { return nil }
return customStyle
}
open override func updateView() {
checkforFontChange()
super.updateView()
}
open override func updateAccessibility() { open override func updateAccessibility() {
super.updateAccessibility() super.updateAccessibility()

View File

@ -54,12 +54,3 @@ extension VDS.Font {
Self.allCases.filter({$0.fontName == fontName }).first Self.allCases.filter({$0.fontName == fontName }).first
} }
} }
extension VDS.TextStyle {
internal static func style(from font: VDS.Font, pointSize: CGFloat) -> TextStyle? {
guard let first = allCases.filter({$0.fontFace == font && $0.pointSize == pointSize}).first else {
return TextStyle(rawValue: "Custom-TextStyle", fontFace: font, pointSize: pointSize)
}
return first
}
}