Label fix
This commit is contained in:
parent
0529c9d357
commit
7d5bee5654
@ -244,10 +244,15 @@ public typealias ActionBlock = () -> ()
|
|||||||
}
|
}
|
||||||
if let fontStyle = labelModel.fontStyle {
|
if let fontStyle = labelModel.fontStyle {
|
||||||
MFStyler.styleLabel(self, withStyle: fontStyle)
|
MFStyler.styleLabel(self, withStyle: fontStyle)
|
||||||
|
MFStyler.styleLabel(self, withStyle: fontStyle, genericScaling: false)
|
||||||
|
standardFontSize = font.pointSize
|
||||||
} else {
|
} else {
|
||||||
let fontSize = labelModel.fontSize
|
let fontSize = labelModel.fontSize
|
||||||
|
if let fontSize = fontSize {
|
||||||
|
standardFontSize = fontSize
|
||||||
|
}
|
||||||
if let fontName = labelModel.fontName {
|
if let fontName = labelModel.fontName {
|
||||||
font = MFFonts.mfFont(withName: fontName, size: fontSize ?? font.pointSize)
|
font = MFFonts.mfFont(withName: fontName, size: fontSize ?? standardFontSize)
|
||||||
} else if let fontSize = fontSize {
|
} else if let fontSize = fontSize {
|
||||||
font = font.withSize(fontSize)
|
font = font.withSize(fontSize)
|
||||||
}
|
}
|
||||||
@ -262,9 +267,9 @@ public typealias ActionBlock = () -> ()
|
|||||||
for attribute in attributes {
|
for attribute in attributes {
|
||||||
let range = NSRange(location: attribute.location, length: attribute.length)
|
let range = NSRange(location: attribute.location, length: attribute.length)
|
||||||
switch attribute {
|
switch attribute {
|
||||||
case let underLineAtt as LabelAttributeUnderlineModel:
|
case let _ as LabelAttributeUnderlineModel:
|
||||||
attributedString.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: range)
|
attributedString.addAttribute(.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: range)
|
||||||
case let strikeAtt as LabelAttributeStrikeThroughModel:
|
case let _ as LabelAttributeStrikeThroughModel:
|
||||||
attributedString.addAttribute(.strikethroughStyle, value: NSUnderlineStyle.thick.rawValue, range: range)
|
attributedString.addAttribute(.strikethroughStyle, value: NSUnderlineStyle.thick.rawValue, range: range)
|
||||||
attributedString.addAttribute(.baselineOffset, value: 0, range: range)
|
attributedString.addAttribute(.baselineOffset, value: 0, range: range)
|
||||||
case let colorAtt as LabelAttributeColorModel:
|
case let colorAtt as LabelAttributeColorModel:
|
||||||
@ -309,11 +314,17 @@ public typealias ActionBlock = () -> ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case let actionAtt as LabelAttributeActionModel:
|
case let actionAtt as LabelAttributeActionModel:
|
||||||
|
addTappableLinkAttribute(range: NSRange(location: range.location, length: range.length)) {
|
||||||
|
if let data = try? actionAtt.encode(using: JSONEncoder()), let actionMap = try? JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.init()) as? [AnyHashable: Any] {
|
||||||
|
MVMCoreActionHandler.shared()?.handleAction(with: actionMap, additionalData: additionalData, delegateObject: delegateObject)
|
||||||
|
}
|
||||||
|
}
|
||||||
addActionAttributes(range: range, string: attributedString)
|
addActionAttributes(range: range, string: attributedString)
|
||||||
default:
|
default:
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
attributedText = attributedString
|
||||||
originalAttributedString = attributedText
|
originalAttributedString = attributedText
|
||||||
hero = labelModel.hero
|
hero = labelModel.hero
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,12 +12,21 @@ class LabelAttributeActionModel: LabelAttributeModel {
|
|||||||
override public class var identifier: String {
|
override public class var identifier: String {
|
||||||
return "action"
|
return "action"
|
||||||
}
|
}
|
||||||
|
var action: ActionProtocol
|
||||||
|
|
||||||
required public init(from decoder: Decoder) throws {
|
required public init(from decoder: Decoder) throws {
|
||||||
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
action = try typeContainer.decodeModel(codingKey: .action, typeCodingKey: ActionCodingKey.actionType)
|
||||||
try super.init(from: decoder)
|
try super.init(from: decoder)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func encode(to encoder: Encoder) throws {
|
public override func encode(to encoder: Encoder) throws {
|
||||||
try super.encode(to: encoder)
|
try super.encode(to: encoder)
|
||||||
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
|
try container.encodeModel(action, forKey: .action)
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum CodingKeys: String, CodingKey {
|
||||||
|
case action
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -179,10 +179,9 @@ open class DoughnutChart: View {
|
|||||||
let labelheight = labelContainer.frame.height/2
|
let labelheight = labelContainer.frame.height/2
|
||||||
let padding = sizeObject.getValueBasedOnApplicationWidth()/2 - sqrt(pow(radius, 2) - pow(labelheight, 2))
|
let padding = sizeObject.getValueBasedOnApplicationWidth()/2 - sqrt(pow(radius, 2) - pow(labelheight, 2))
|
||||||
|
|
||||||
labelContainer.leftPin?.constant = padding
|
labelContainerLeftConstraint?.constant = padding
|
||||||
labelContainer.rightPin?.constant = padding
|
labelContainerRightConstraint?.constant = padding
|
||||||
labelContainer.topPin?.constant = max(radius - labelheight, labelheight)
|
labelContainerTopConstraint?.constant = max(radius - labelheight, labelheight)
|
||||||
labelContainer.bottomPin?.constant = max(radius - labelheight, labelheight)
|
labelContainerBottomConstraint?.constant = max(radius - labelheight, labelheight)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user