Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions Aztec/Classes/TextKit/MediaAttachment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ open class MediaAttachment: NSTextAttachment {
/// Identifier used to match this attachment with a custom UIView subclass
///
private(set) open var identifier = String()

/// Attachment URL
///
fileprivate(set) public var url: URL?
Expand Down Expand Up @@ -204,7 +204,7 @@ open class MediaAttachment: NSTextAttachment {
// MARK: - NSTextAttachmentContainer

override open func image(forBounds imageBounds: CGRect, textContainer: NSTextContainer?, characterIndex charIndex: Int) -> UIImage? {

ensureImageIsUpToDate(in: textContainer)

guard let image = image else {
Expand All @@ -223,7 +223,7 @@ open class MediaAttachment: NSTextAttachment {
func mediaBounds(for bounds: CGRect) -> CGRect {
let containerWidth = bounds.size.width
let origin = CGPoint(x: xPosition(forContainerWidth: bounds.size.width), y: appearance.imageMargin)
let size = CGSize(width: onScreenWidth(containerWidth), height: onScreenHeight(containerWidth) - appearance.imageMargin)
let size = CGSize(width: onScreenWidth(containerWidth), height: onScreenHeight(containerWidth) - appearance.imageMargin * 2)
return CGRect(origin: origin, size: size)
}

Expand Down Expand Up @@ -321,22 +321,25 @@ open class MediaAttachment: NSTextAttachment {
/// Otherwise, we'll always take the whole container's width.
///
override open func attachmentBounds(for textContainer: NSTextContainer?, proposedLineFragment lineFrag: CGRect, glyphPosition position: CGPoint, characterIndex charIndex: Int) -> CGRect {

ensureImageIsUpToDate(in: textContainer)

if image == nil {
return .zero
}

var padding = (textContainer?.lineFragmentPadding ?? 0)
var padding = (textContainer?.lineFragmentPadding ?? 0) * 2
if let storage = textContainer?.layoutManager?.textStorage,
let paragraphStyle = storage.attribute(.paragraphStyle, at: charIndex, effectiveRange: nil) as? NSParagraphStyle {
padding += paragraphStyle.firstLineHeadIndent + paragraphStyle.tailIndent
let attachmentString = storage.attributedSubstring(from: NSMakeRange(charIndex, 1)).string
let headIndent = storage.string.isStartOfParagraph(at: attachmentString.startIndex) ? paragraphStyle.firstLineHeadIndent : paragraphStyle.headIndent

padding += abs(paragraphStyle.tailIndent) + abs(headIndent)
}
let width = floor(lineFrag.width - (padding * 2))
let width = floor(lineFrag.width - padding)

let size = CGSize(width: width, height: onScreenHeight(width))

return CGRect(origin: CGPoint.zero, size: size)
}
}
Expand Down Expand Up @@ -384,7 +387,6 @@ private extension MediaAttachment {
self.invalidateLayout(in: textContainer)

}, onFailure: { [weak self] () in

self?.isFetchingImage = false
})
}
Expand Down Expand Up @@ -479,3 +481,4 @@ extension MediaAttachment {
public var imageMargin = CGFloat(10.0)
}
}