Further swapping of didSet/willSet.

This commit is contained in:
Christiano, Kevin 2019-04-01 11:44:25 -04:00
parent f68c355527
commit c5233a680d

View File

@ -25,7 +25,7 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
public weak var label: MFLabel?
public var attributedText: NSAttributedString? {
didSet(newAttributedText) {
willSet(newAttributedText) {
if let newAttribText = newAttributedText, !newAttribText.string.isEmpty {
let mutableAttributedText = newAttribText as? NSMutableAttributedString
let paragraphStyle = NSMutableParagraphStyle()
@ -44,25 +44,25 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
// By default, it will follow most of the font standard in zepplin, and should need to be changed
public var normalTextFont: UIFont? = MFStyler.fontB2() {
didSet(newNormalFont) {
willSet(newNormalFont) {
setAlternateNormalTextAttributes([NSAttributedString.Key.font: newNormalFont as Any])
}
}
public var actionTextFont: UIFont? = MFStyler.fontB2() {
didSet(newActionFont) {
willSet(newActionFont) {
setAlternateActionTextAttributes([NSAttributedString.Key.font: newActionFont as Any])
}
}
public var normalTextColor: UIColor = .black {
didSet(newNormalColor) {
willSet(newNormalColor) {
setAlternateNormalTextAttributes([NSAttributedString.Key.foregroundColor: newNormalColor as Any])
}
}
public var actionTextColor: UIColor = .black {
didSet(newActionColor) {
willSet(newActionColor) {
setAlternateActionTextAttributes([NSAttributedString.Key.foregroundColor: newActionColor as Any])
}
}
@ -81,13 +81,11 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
public var text: String? {
willSet(newText) {
// if newText != nil {
attributedText = NSAttributedString(string: newText ?? "")
setAlternateNormalTextAttributes([NSAttributedString.Key.font: normalTextFont as Any])
setAlternateActionTextAttributes([NSAttributedString.Key.font: actionTextFont as Any])
setAlternateNormalTextAttributes([NSAttributedString.Key.foregroundColor: normalTextColor as Any])
setAlternateActionTextAttributes([NSAttributedString.Key.foregroundColor: actionTextColor as Any])
// }
attributedText = NSAttributedString(string: newText ?? "")
setAlternateNormalTextAttributes([NSAttributedString.Key.font: normalTextFont as Any])
setAlternateActionTextAttributes([NSAttributedString.Key.font: actionTextFont as Any])
setAlternateNormalTextAttributes([NSAttributedString.Key.foregroundColor: normalTextColor as Any])
setAlternateActionTextAttributes([NSAttributedString.Key.foregroundColor: actionTextColor as Any])
}
}
@ -111,15 +109,15 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
}
public init(frontText: String?, actionText: String?, backText: String?, actionMap: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?, actionDelegate delegate: ActionObjectDelegate?, buttonDelegate: ButtonObjectDelegate?) {
super.init(frame: CGRect.zero)
setFrontText(frontText, actionText: actionText, actionMap: actionMap, backText: backText, additionalData: additionalData, delegate: delegate, buttonDelegate: buttonDelegate)
}
// MARK: - legacy
public init(frontText: String?, actionText: String?, backText: String?, actionBlock block: ActionBlock?) {
super.init(frame: CGRect.zero)
self.frontText = frontText
self.actionText = actionText
self.backText = backText
@ -139,23 +137,19 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
}
public convenience init(frontText: String?, actionText: String?, backText: String?, actionMap: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?, actionDelegate delegate: ActionObjectDelegate?) {
self.init(frontText: frontText, actionText: actionText, backText: backText, actionMap: actionMap, additionalData: additionalData, actionDelegate: delegate, buttonDelegate: nil)
}
public convenience init(actionMap: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?, actionDelegate delegate: ActionObjectDelegate?) {
self.init(frontText: actionMap?.optionalStringForKey(KeyTitlePrefix), actionText: actionMap?.optionalStringForKey(KeyTitle), backText: actionMap?.optionalStringForKey(KeyTitlePostfix), actionMap: actionMap, additionalData: additionalData, actionDelegate: delegate)
}
public convenience init(frontText: String?, backText: String?, actionMap: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?, actionDelegate delegate: ActionObjectDelegate?) {
self.init(frontText: frontText, actionText: actionMap?.optionalStringForKey(KeyTitle), backText: backText, actionMap: actionMap, additionalData: additionalData, actionDelegate: delegate)
}
// Convenience Initializer which assumes that the clickable text will be embedded in curly braces {}.
public convenience init(clickableTextEmbeddedInCurlyBraces fullText: String?, actionMapForClickableText actionMap: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?, actionDelegate delegate: ActionObjectDelegate?) {
self.init(text: fullText, startTag: "{", endTag: "}", actionMap: actionMap, additionalData: additionalData, actionDelegate: delegate)
}
@ -226,7 +220,6 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
//------------------------------------------------------
@objc public func setFrontText(_ frontText: String?, actionMap: [AnyHashable: Any]?, backText: String?, additionalData: [AnyHashable: Any]?, delegate: ActionObjectDelegate?, buttonDelegate: ButtonObjectDelegate?) {
setFrontText(frontText, actionText: actionMap?.optionalStringForKey(KeyTitle), actionMap: actionMap, backText: backText, additionalData: additionalData, delegate: delegate, buttonDelegate: buttonDelegate)
}
@ -289,7 +282,7 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
attributedText = mutableAttributedString
//added this line for underlining
// Added this line for underlining
setAlternateActionTextAttributes([NSAttributedString.Key.underlineStyle: NSNumber(value: NSUnderlineStyle.single.rawValue)])
}
@ -337,7 +330,7 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
result = true
break
} else if wordRect.origin.x == 0 && wordRect.origin.y == 0 && wordRect.size.height == 0 && wordRect.size.width == 0 {
//incase word rect is not found for any reason, make the whole label to be clicable to avoid non functioning link in production.
// Incase word rect is not found for any reason, make the whole label to be clicable to avoid non functioning link in production.
result = true
break
}
@ -424,7 +417,7 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
self.text = actionRange.revisedText
setup()
}
private func rangeOfText(_ text: String?, startTag: String?, endTag: String?) -> ActionIndiciesTuple {
var fullText = text ?? ""
@ -484,25 +477,25 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
@objc public func setAlternateActionTextAttributes(_ attributes: [AnyHashable: Any]?) {
if let theseAttributes = attributes as? [NSAttributedString.Key: Any], let thisAttributedText = attributedText {
let attributedString = NSMutableAttributedString(attributedString: thisAttributedText)
if !attributedString.string.isEmpty {
attributedString.addAttributes(theseAttributes, range: getActionRange())
}
attributedText = attributedString
guard let theseAttributes = attributes as? [NSAttributedString.Key: Any], let thisAttributedText = attributedText else { return }
let attributedString = NSMutableAttributedString(attributedString: thisAttributedText)
if !attributedString.string.isEmpty {
attributedString.addAttributes(theseAttributes, range: getActionRange())
}
attributedText = attributedString
}
@objc public func setAlternateNormalTextAttributes(_ attributes: [AnyHashable: Any]?) {
public func setAlternateNormalTextAttributes(_ attributes: [AnyHashable: Any]?) {
if let _attributedText = attributedText, let _attributes = attributes as? [NSAttributedString.Key: Any] {
let attributedString = NSMutableAttributedString(attributedString: _attributedText)
if !attributedString.string.isEmpty {
attributedString.addAttributes(_attributes, range: getFrontRange())
attributedString.addAttributes(_attributes, range: getBackRange())
}
attributedText = attributedString
guard let _attributedText = attributedText, let _attributes = attributes as? [NSAttributedString.Key: Any] else { return }
let attributedString = NSMutableAttributedString(attributedString: _attributedText)
if !attributedString.string.isEmpty {
attributedString.addAttributes(_attributes, range: getFrontRange())
attributedString.addAttributes(_attributes, range: getBackRange())
}
attributedText = attributedString
}
private func getFrontRange() -> NSRange {
@ -565,8 +558,7 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt
@objc public func accessibilityCustomAction() -> UIAccessibilityCustomAction? {
if let actionTxt = actionText, !actionTxt.isEmpty {
let name = actionTxt
return UIAccessibilityCustomAction(name: name, target: self, selector: #selector(LabelWithInternalButton.accessibilityCustomActions))
return UIAccessibilityCustomAction(name: actionTxt, target: self, selector: #selector(LabelWithInternalButton.accessibilityCustomActions))
}
return UIAccessibilityCustomAction()
@ -624,27 +616,11 @@ extension LabelWithInternalButton: MVMCoreUIMoleculeViewProtocol {
self.actionText = actionText
}
// Want this to be last because it has a didSet feature.
//public var actionBlock: ActionBlock?
// Want this to be last because it has a willSet feature.
if let text = dictionary["text"] as? String {
self.text = text
}
}
}
/*
public var actionBlock: ActionBlock?
public var alternateAttributeForActionText: String?
let mutableAttributedText = newAttributedText as? NSMutableAttributedString
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = CGFloat(LabelWithInternalButtonLineSpace)
mutableAttributedText?.addAttribute(.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: newAttributedText?.length ?? 0))
override open var isEnabled: Bool {
didSet {
alpha = isEnabled ? 1 : DisableOppacity
}
*/