У меня есть контроллер просмотра, содержащий UITextView. Этот UITextView получает текст, обновляемый программно, в зависимости от модели данных, контролирующей его (около 30 различных текстовых опций). Содержимое в UITextView всегда будет довольно длинным, примерно по 450 слов каждый. Пункты будут варьироваться от 2 до 5.Добавление заголовков параграфов программно в UITextView
Все работает отлично. Мне просто нужен визуальный способ разбить абзацы. Прямо сейчас, я использую \ n \ n, чтобы создать пару разрывов строк между абзацами. Хотя это работает, мне в конечном итоге нужны заголовки.
В IB я изменил свойство text из Plain в Attributed. Это позволяет мне изменять текст в стиле WYSIWYG прямо в Xcode. Отлично работает, но я не использую IB для изменения текста.
Я попытался использовать WebView (код ниже). Я создал чрезвычайно простой HTML-файл с тегами H1 и P. Это, к сожалению, создаст 30+ HTML-файлов в моем проекте. Мне это не нравится с точки зрения управляемости. Текст также не может быть выбором, который он с WebView (я не хочу прибегать к CSS [-webkit-пользователю выберите], чтобы смягчить эту проблему.)
let path: String? = Bundle.main.path(forResource: "myHTML", ofType: "html")
let file = try? String(contentsOfFile: path!, encoding: String.Encoding.utf8)
let baseURL = URL(fileURLWithPath: Bundle.main.bundlePath)
self.myWebView.loadHTMLString(file!, baseURL: baseURL)
Моего идеальным решением
Могу ли я придерживаться моей текущей настройки? Программное изменение текста UITextView с моей моделью данных, если вы можете изменить текстовые атрибуты в коде для создания заголовков абзацев?
Edit - Попытка заставить это работать с MVC
allFormattedDescriptions: [
Formatted(heading: "heading 1", descriptionText: "Lorem Ipsum Paragraph 1"),
Formatted(heading: "heading 2", descriptionText: "Lorem Ipsum Paragraph 2"),
Formatted(heading: "heading 3", descriptionText: "Lorem Ipsum Paragraph 3")
]
// Ideal formatting; every paragraph will have a heading. Can handle that with one object that requires both a heading and description text (paragraph).
struct Formatted {
var heading: String!
var descriptionText: String!
var bodyParagraphStyle: NSMutableParagraphStyle = {
let style = NSMutableParagraphStyle()
style.lineSpacing = 10
style.paragraphSpacingBefore = 6
style.paragraphSpacing = 6
return style
}()
var headerParagraphStyle: NSMutableParagraphStyle = {
let style = NSMutableParagraphStyle()
style.paragraphSpacingBefore = 24
return style
}()
var bodyAttributes: [String: AnyObject]!
var headerAttributes: [String: AnyObject]!
}
ли вид текста для редактирования? – AdamPro13
Вы можете определенно сделать это в коде. 'NSMutableAttributedString' позволяет вам добавлять и удалять атрибуты по своему усмотрению. Вы также можете использовать его для отображения HTML. Если вам не нужно отображать HTML, вы можете вызвать 'enumerateAttributesInRange', чтобы получить все атрибуты и изменить их. Или вы можете просто называть' addAttributes' или 'setAttributes' для установки различных стилей. Это включает в себя стили и отступы абзаца, рамки строк, цвета, подчеркивание, зачеркивание, шрифт и т. Д. – Brandon
Я не понимаю, чего вы хотите. Можете ли вы предоставить макет? –