Оказывается, я был на стадионе, но точно не близко.
Следующее обеспечивает желаемый эффект разделения столбца:
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.tabStops = [
// 274 would be the midpoint of my document
NSTextTab(textAlignment: .left, location: 274, options: [:])
]
let string = "\u{2022} This\t\u{2022} is\n\u{2022} getting\t\u{2022} really\n\u{2022} old"
let attributedString = NSAttributedString(
string: string,
attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle]
)
Для бонусных баллов, если вы хотите иметь несколько столбцов в своем документе, это будет выполнено следующим образом (простите за мое грубое форматирование):
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.tabStops = [
NSTextTab(textAlignment: .left, location: 100, options: [:]),
NSTextTab(textAlignment: .left, location: 300, options: [:])
]
let string = "\u{2022} This\t\u{2022} is\t\u{2022} getting\n\u{2022} really\t\u{2022} old"
let attributedString = NSAttributedString(
string: string,
attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle]
)
И будет выглядеть так:
Что здесь происходит?
Итак, я узнал, что tabStops
сообщает iOS, в каком месте в строке разместить вкладку:
- Первая вкладка перейдет в положение 100
- Вторая вкладка перейдет в положение 300
- AТретья вкладка обернется вокруг документа и также перейдет в положение 100
Что касается табуляции, если вы назначите вкладку с местоположением 0 в первом индексе, то табуляция новой строки приведет ее в соответствие слевый край.
Что касается того, что решило проблему для меня.Я полагался на подход, при котором каждый компонент строки добавлялся так, как он встречался.Однако эта строка не сможет правильно отформатировать.Вместо этого, объединив все в одну строку и применив атрибуты, видимые в моем рабочем коде, я смог правильно настроить его.
Я также протестировал использование отдельных компонентов, как видно из моего вопроса, но с применением атрибутов стиля абзаца, что также привело к рабочему решению.
На основании этого онПохоже, что моей ошибкой было смешивание строк, которые имели и не имели желаемого поведения табуляции.