mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
c9cbe13bc0
Многоточие, которое мы прилепляли к обрезанным строкам считается не продолжением строки (с сохранением порядка пропертей CTLine), а как будто "новой" строкой, дописанной снизу. Поэтому добавил отдельную обработку для обрезанной строки Чтобы было понятнее Если была какая-то 2 строчная строка, то range у нее внутри attrstring будут как (x, y (y - кол-во символов в конкретной строке)), (x + y + 1, z) соответственно, а у обрезанной (x, y), (0, 2) потому что это уже несвязанные строки.
25 lines
583 B
Swift
25 lines
583 B
Swift
// Copyright 2021 Yandex LLC. All rights reserved.
|
|
|
|
import CoreGraphics
|
|
import CoreText
|
|
import Foundation
|
|
|
|
public struct AttributedStringLayout<Action> {
|
|
public struct Run {
|
|
public let rect: CGRect
|
|
public let action: Action
|
|
}
|
|
|
|
public let firstLineOriginX: CGFloat?
|
|
public let runsWithAction: [Run]
|
|
public let lines: [AttributedStringLineLayout]
|
|
}
|
|
|
|
public struct AttributedStringLineLayout: Equatable {
|
|
public let line: CTLine
|
|
public let verticalOffset: CGFloat
|
|
public let horizontalOffset: CGFloat
|
|
public let range: NSRange
|
|
public let isTruncated: Bool
|
|
}
|