Merge branch 'release/11_4_0' into 'develop'

fixed issue with attributedText setting not working correctly

See merge request BPHV_MIPS/vds_ios!177
This commit is contained in:
Bruce, Matt R 2024-03-14 23:59:16 +00:00
commit 4abcc313cf

View File

@ -108,14 +108,14 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
// MARK: - Public Properties // MARK: - Public Properties
//-------------------------------------------------- //--------------------------------------------------
/// Key of whether or not updateView() is called in setNeedsUpdate() /// Key of whether or not updateView() is called in setNeedsUpdate()
open var shouldUpdateView: Bool = true open var shouldUpdateView: Bool = true
/// Will determine if a scaled font should be used for the font. /// Will determine if a scaled font should be used for the font.
open var useScaledFont: Bool = false { didSet { setNeedsUpdate() }} open var useScaledFont: Bool = false { didSet { setNeedsUpdate() }}
open var surface: Surface = .light { didSet { setNeedsUpdate() }} open var surface: Surface = .light { didSet { setNeedsUpdate() }}
/// Array of LabelAttributeModel objects used in rendering the text. /// Array of LabelAttributeModel objects used in rendering the text.
open var attributes: [any LabelAttributeModel]? { didSet { setNeedsUpdate() }} open var attributes: [any LabelAttributeModel]? { didSet { setNeedsUpdate() }}
/// TextStyle used on the this label. /// TextStyle used on the this label.
@ -135,20 +135,18 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
/// Text that will be used in the label. /// Text that will be used in the label.
private var _text: String! private var _text: String!
override open var text: String! { override open var text: String! {
get { _text } didSet {
set { _text = text
textSetMode = .text textSetMode = .text
_text = newValue setNeedsUpdate()
styleText(newValue)
} }
} }
///AttributedText that will be used in the label. ///AttributedText that will be used in the label.
override open var attributedText: NSAttributedString? { override open var attributedText: NSAttributedString? {
get { super.attributedText } didSet {
set {
textSetMode = .attributedText textSetMode = .attributedText
styleAttributedText(newValue) setNeedsUpdate()
} }
} }
@ -288,7 +286,7 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
private func styleText(_ newValue: String!) { private func styleText(_ newValue: String!) {
defer { invalidateIntrinsicContentSize() } defer { invalidateIntrinsicContentSize() }
guard let newValue else { guard let newValue, !newValue.isEmpty else {
// We don't need to use attributed text // We don't need to use attributed text
super.attributedText = nil super.attributedText = nil
super.text = newValue super.text = newValue
@ -306,14 +304,14 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
lineBreakMode: lineBreakMode) lineBreakMode: lineBreakMode)
applyAttributes(mutableText) applyAttributes(mutableText)
// Set attributed text to match typography // Set attributed text to match typography
super.attributedText = mutableText super.attributedText = mutableText
} }
private func styleAttributedText(_ newValue: NSAttributedString?) { private func styleAttributedText(_ newValue: NSAttributedString?) {
defer { invalidateIntrinsicContentSize() } defer { invalidateIntrinsicContentSize() }
guard let newValue = newValue else { guard let newValue, !newValue.string.isEmpty else {
// We don't need any additional styling // We don't need any additional styling
super.attributedText = newValue super.attributedText = newValue
return return
@ -322,7 +320,7 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
let mutableText = NSMutableAttributedString(attributedString: newValue) let mutableText = NSMutableAttributedString(attributedString: newValue)
applyAttributes(mutableText) applyAttributes(mutableText)
// Modify attributed text to match typography // Modify attributed text to match typography
super.attributedText = mutableText super.attributedText = mutableText
} }
@ -424,3 +422,5 @@ open class Label: UILabel, ViewProtocol, UserInfoable {
} }
} }
} }