udpated tooltip attribute
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
2bbe71e106
commit
8ed2506580
@ -14,19 +14,20 @@ public class TooltipLabelAttribute: ActionLabelAttributeModel, TooltipLaunchable
|
||||
public var id = UUID()
|
||||
public var action = PassthroughSubject<Void, Never>()
|
||||
private var subscriber: AnyCancellable?
|
||||
private var size: Tooltip.Size = .small
|
||||
public var location: Int = 0
|
||||
public var length: Int = 3
|
||||
public var surface: Surface = .light
|
||||
public var accessibleText: String? = "Tool Tip"
|
||||
public var closeButtonText: String = "Close"
|
||||
public var size: Tooltip.Size = .medium
|
||||
public var title: String
|
||||
public var content: String
|
||||
|
||||
public func setAttribute(on attributedString: NSMutableAttributedString) {
|
||||
//update the location
|
||||
location = attributedString.string.count
|
||||
|
||||
//update the location
|
||||
location = attributedString.string.count - 1
|
||||
|
||||
//set the default color off surface for text
|
||||
var imageTintColor: UIColor = surface == .light ? VDSColor.elementsPrimaryOnlight : VDSColor.elementsPrimaryOndark
|
||||
|
||||
//see if you can get the current textColor
|
||||
@ -34,45 +35,50 @@ public class TooltipLabelAttribute: ActionLabelAttributeModel, TooltipLaunchable
|
||||
if let textColor = attributedString.attribute(.foregroundColor, at: 0, effectiveRange: &originalRange) as? UIColor {
|
||||
imageTintColor = textColor
|
||||
}
|
||||
|
||||
//create the space in the attirbuted String for the tooltip image and click action
|
||||
let spaceForTooltip = String(repeating: " ", count: length)
|
||||
|
||||
//find the middle of the space
|
||||
let middle = (length/2)
|
||||
|
||||
//add the space to the attributed string
|
||||
attributedString.insert(NSAttributedString(string: spaceForTooltip), at: location)
|
||||
var frame = CGRect.zero
|
||||
if let font = attributedString.attribute(.font, at: 0, effectiveRange: &originalRange) as? UIFont {
|
||||
switch font.pointSize {
|
||||
case 15..<25:
|
||||
size = .medium
|
||||
frame = CGRect(x: 0, y: -1, width: size.value.dimensions.width * 0.80, height: size.value.dimensions.height * 0.80)
|
||||
case 0..<14:
|
||||
size = .small
|
||||
frame = CGRect(x: 0, y: -1, width: size.value.dimensions.width * 0.80 , height: size.value.dimensions.height * 0.80)
|
||||
default:
|
||||
size = .medium
|
||||
frame = CGRect(x: 0, y: -1, width: size.value.dimensions.width, height: size.value.dimensions.height)
|
||||
}
|
||||
}
|
||||
|
||||
//create the frame in which to hold the icon
|
||||
let frame = CGRect(x: 0, y: 0, width: size.value.dimensions.width, height: size.value.dimensions.width)
|
||||
let spacerframe = CGRect(x: 0, y: 0, width: VDSLayout.Spacing.space1X.value, height: size.value.dimensions.height)
|
||||
|
||||
//create the image icon and match the color of the text
|
||||
let tooltipAttribute = ImageLabelAttribute(location: location + middle,
|
||||
length: 1,
|
||||
let tooltipAttribute = ImageLabelAttribute(location: location,
|
||||
imageName: "info",
|
||||
frame: frame,
|
||||
tintColor: imageTintColor)
|
||||
|
||||
//create the action for the tooltip click
|
||||
let tooltipAction = ActionLabelAttribute(location: location - middle,
|
||||
length: length + middle,
|
||||
shouldUnderline: false,
|
||||
action: action)
|
||||
let spacerAttribute = ImageLabelAttribute(location: location,
|
||||
imageName: "info",
|
||||
frame: spacerframe,
|
||||
tintColor: .clear)
|
||||
|
||||
//apply the attribtes to the current attributedString
|
||||
tooltipAttribute.setAttribute(on: attributedString)
|
||||
tooltipAction.setAttribute(on: attributedString)
|
||||
guard let tooltip = try? tooltipAttribute.getAttachment(),
|
||||
let spacer = try? spacerAttribute.getAttachment() else { return }
|
||||
attributedString.append(NSAttributedString(attachment: spacer))
|
||||
attributedString.append(NSAttributedString(attachment: tooltip))
|
||||
addHandler(on: attributedString)
|
||||
}
|
||||
|
||||
public init(id: UUID = UUID(), action: PassthroughSubject<Void, Never> = PassthroughSubject<Void, Never>(), subscriber: AnyCancellable? = nil, surface: Surface, accessibleText: String? = nil, closeButtonText: String, size: Tooltip.Size, title: String, content: String) {
|
||||
public init(id: UUID = UUID(), action: PassthroughSubject<Void, Never> = PassthroughSubject<Void, Never>(), subscriber: AnyCancellable? = nil, surface: Surface, accessibleText: String? = nil, closeButtonText: String, title: String, content: String) {
|
||||
self.id = id
|
||||
self.action = action
|
||||
self.subscriber = subscriber
|
||||
self.surface = surface
|
||||
self.accessibleText = accessibleText
|
||||
self.closeButtonText = closeButtonText
|
||||
self.size = size
|
||||
self.title = title
|
||||
self.content = content
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user