optional check improvements.
This commit is contained in:
parent
d6fdf9958e
commit
71f1f499e0
@ -139,83 +139,81 @@ class Label: UILabel, MVMCoreViewProtocol, MVMCoreUIMoleculeViewProtocol {
|
|||||||
|
|
||||||
static func setLabel(_ label: UILabel?, withHTML html: String?) {
|
static func setLabel(_ label: UILabel?, withHTML html: String?) {
|
||||||
|
|
||||||
let data: Data? = html?.data(using: .utf8)
|
guard let data = html?.data(using: .utf8) else { return }
|
||||||
|
|
||||||
if let data = data {
|
do {
|
||||||
do {
|
label?.attributedText = try NSAttributedString(data: data,
|
||||||
label?.attributedText = try NSAttributedString(data: data,
|
options: [NSAttributedString.DocumentReadingOptionKey.documentType:NSAttributedString.DocumentType.html, NSAttributedString.DocumentReadingOptionKey.characterEncoding: String.Encoding.utf8.rawValue],
|
||||||
options: [NSAttributedString.DocumentReadingOptionKey.documentType:NSAttributedString.DocumentType.html, NSAttributedString.DocumentReadingOptionKey.characterEncoding: String.Encoding.utf8.rawValue],
|
documentAttributes: nil)
|
||||||
documentAttributes: nil)
|
} catch {
|
||||||
} catch {
|
if let coreErrorObject = MVMCoreErrorObject.createErrorObject(for: error, location: "LabelHTMLParse") {
|
||||||
MVMCoreUILoggingHandler.shared()?.addError(toLog: MVMCoreErrorObject.createErrorObject(for: error, location: "LabelHTMLParse")!)
|
MVMCoreUILoggingHandler.shared()?.addError(toLog: coreErrorObject)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static func setUILabel(_ label: UILabel?, withJSON json: [AnyHashable: Any]?, delegate: NSObject?, additionalData: [AnyHashable: Any]?) {
|
static func setUILabel(_ label: UILabel?, withJSON json: [AnyHashable: Any]?, delegate: NSObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
|
|
||||||
if let label = label {
|
guard let label = label else { return }
|
||||||
label.text = json?.optionalStringForKey(KeyText)
|
|
||||||
setLabel(label, withHTML: json?.stringForkey("html"))
|
label.text = json?.optionalStringForKey(KeyText)
|
||||||
|
setLabel(label, withHTML: json?.stringForkey("html"))
|
||||||
if let textColorHex = json?.optionalStringForKey(KeyTextColor) {
|
|
||||||
label.textColor = UIColor.mfGet(forHex: textColorHex)
|
if let textColorHex = json?.optionalStringForKey(KeyTextColor), !textColorHex.isEmpty {
|
||||||
}
|
label.textColor = UIColor.mfGet(forHex: textColorHex)
|
||||||
|
}
|
||||||
if let backgroundColorHex = json?.optionalStringForKey(KeyBackgroundColor) {
|
|
||||||
label.backgroundColor = UIColor.mfGet(forHex: backgroundColorHex)
|
if let backgroundColorHex = json?.optionalStringForKey(KeyBackgroundColor), !backgroundColorHex.isEmpty {
|
||||||
}
|
label.backgroundColor = UIColor.mfGet(forHex: backgroundColorHex)
|
||||||
|
}
|
||||||
if let accessibilityText = json?.optionalStringForKey("accessibilityText") {
|
|
||||||
label.accessibilityLabel = accessibilityText
|
label.accessibilityLabel = json?.optionalStringForKey("accessibilityText")
|
||||||
}
|
|
||||||
|
let fontSize = json?.floatForKey("fontSize") ?? 0.0
|
||||||
let fontSize = json?.floatForKey("fontSize") ?? 0.0
|
|
||||||
|
if let fontName = json?.optionalStringForKey("fontName") {
|
||||||
if let fontName = json?.optionalStringForKey("fontName") {
|
label.font = MFFonts.mfFont(withName: fontName, size: fontSize == 0.0 ? label.font.pointSize : CGFloat(fontSize))
|
||||||
label.font = MFFonts.mfFont(withName: fontName, size: fontSize == 0.0 ? label.font.pointSize : CGFloat(fontSize))
|
} else {
|
||||||
} else {
|
label.font = label.font.withSize(CGFloat(fontSize))
|
||||||
label.font = label.font.withSize(CGFloat(fontSize))
|
}
|
||||||
}
|
|
||||||
|
if let attributes = json?.arrayForKey("attributes"), let labelText = label.text {
|
||||||
if let attributes = json?.arrayForKey("attributes"), let labelText = label.text {
|
let attributedString = NSMutableAttributedString(string: labelText, attributes: [NSAttributedString.Key.font: label.font as Any,
|
||||||
let attributedString = NSMutableAttributedString(string: labelText, attributes: [NSAttributedString.Key.font: label.font as Any,
|
NSAttributedString.Key.foregroundColor: label.textColor as Any])
|
||||||
NSAttributedString.Key.foregroundColor: label.textColor as Any])
|
for case let attribute as [String: Any] in attributes {
|
||||||
for case let attribute as [String: Any] in attributes {
|
let range = NSRange(location: Int(attribute.floatForKey("location")),
|
||||||
let range = NSRange(location: Int(attribute.floatForKey("location")),
|
length: Int(attribute.floatForKey("length")))
|
||||||
length: Int(attribute.floatForKey("length")))
|
|
||||||
|
guard let attributeType = attribute.optionalStringForKey(KeyType) else { continue }
|
||||||
|
|
||||||
|
switch attributeType {
|
||||||
|
case "underline":
|
||||||
|
attributedString.addAttribute(.underlineStyle, value: NSUnderlineStyle.single, range: range)
|
||||||
|
|
||||||
guard let attributeType = attribute.optionalStringForKey(KeyType) else { continue }
|
case "strikethrough":
|
||||||
|
attributedString.addAttribute(.strikethroughStyle, value: NSUnderlineStyle.thick, range: range)
|
||||||
|
|
||||||
switch attributeType {
|
case "color":
|
||||||
case "underline":
|
if let colorHex = attribute.optionalStringForKey(KeyTextColor), !colorHex.isEmpty {
|
||||||
attributedString.addAttribute(.underlineStyle, value: NSUnderlineStyle.single, range: range)
|
attributedString.addAttribute(.foregroundColor, value: UIColor.mfGet(forHex: colorHex), range: range)
|
||||||
|
|
||||||
case "strikethrough":
|
|
||||||
attributedString.addAttribute(.strikethroughStyle, value: NSUnderlineStyle.thick, range: range)
|
|
||||||
|
|
||||||
case "color":
|
|
||||||
if let colorHex = attribute.optionalStringForKey(KeyTextColor), !colorHex.isEmpty {
|
|
||||||
attributedString.addAttribute(.foregroundColor, value: UIColor.mfGet(forHex: colorHex), range: range)
|
|
||||||
}
|
|
||||||
case "font":
|
|
||||||
let fontSize = attribute.floatForKey("size")
|
|
||||||
let font: UIFont?
|
|
||||||
|
|
||||||
if let fontName = attribute.optionalStringForKey("name"), !fontName.isEmpty {
|
|
||||||
font = MFFonts.mfFont(withName: fontName, size: fontSize != 0.0 ? CGFloat(fontSize) : CGFloat(label.font.pointSize))
|
|
||||||
} else {
|
|
||||||
font = label.font.withSize(CGFloat(fontSize))
|
|
||||||
}
|
|
||||||
|
|
||||||
attributedString.addAttribute(.font, value: font as Any, range: range)
|
|
||||||
|
|
||||||
default:
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
|
case "font":
|
||||||
|
let fontSize = attribute.floatForKey("size")
|
||||||
|
let font: UIFont?
|
||||||
|
|
||||||
|
if let fontName = attribute.optionalStringForKey("name"), !fontName.isEmpty {
|
||||||
|
font = MFFonts.mfFont(withName: fontName, size: fontSize != 0.0 ? CGFloat(fontSize) : CGFloat(label.font.pointSize))
|
||||||
|
} else {
|
||||||
|
font = label.font.withSize(CGFloat(fontSize))
|
||||||
|
}
|
||||||
|
|
||||||
|
attributedString.addAttribute(.font, value: font as Any, range: range)
|
||||||
|
|
||||||
|
default:
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
label.attributedText = attributedString
|
|
||||||
}
|
}
|
||||||
|
label.attributedText = attributedString
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,8 +308,8 @@ class Label: UILabel, MVMCoreViewProtocol, MVMCoreUIMoleculeViewProtocol {
|
|||||||
|
|
||||||
originalAttributedString = attributedText
|
originalAttributedString = attributedText
|
||||||
|
|
||||||
if let actionText = dictionary["actionText"] as? String {
|
// if let actionText = dictionary["actionText"] as? String {
|
||||||
self.actionText = actionText
|
// self.actionText = actionText
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user