metatext/Views/UIKit/AnimatedTextAttachment.swift

28 lines
1.1 KiB
Swift
Raw Normal View History

2021-02-22 07:10:34 +00:00
// Copyright © 2021 Metabolist. All rights reserved.
2021-02-22 23:59:33 +00:00
import SDWebImage
2021-02-22 07:10:34 +00:00
import UIKit
final class AnimatedTextAttachment: NSTextAttachment {
let imageView = SDAnimatedImageView()
private(set) var imageBounds: CGRect?
2021-02-22 07:10:34 +00:00
override func image(forBounds imageBounds: CGRect,
textContainer: NSTextContainer?,
characterIndex charIndex: Int) -> UIImage? {
if let textContainer = textContainer,
let layoutManager = textContainer.layoutManager,
let textContainerImageBounds = textContainer.layoutManager?.boundingRect(
forGlyphRange: NSRange(location: layoutManager.glyphIndexForCharacter(at: charIndex), length: 1),
in: textContainer),
textContainerImageBounds != .zero {
self.imageBounds = textContainerImageBounds
} else {
// Labels sometimes, but not always, end up in this path
self.imageBounds = imageBounds
}
2021-02-22 07:10:34 +00:00
return nil // rendered by AnimatingLayoutManager or AnimatedAttachmentLabel
}
}