私はUITextViewを含むView Controllerを持っています。このUITextViewは、テキストを制御するデータモデル(およそ30種類のテキストオプション)に応じてプログラムによって更新されたテキストを取得します。 UITextViewのコンテンツは、常にそれぞれ約450語のかなり長いものになります。段落の範囲は2〜5です。UITextViewに段落見出しをプログラムで追加する
すべてが完璧です。私は段落を分割するための視覚的な方法が必要です。今は、\ n \ nを使用して段落の間に2つの改行を作成しています。これが機能する間、私は最終的に見出しを必要とします。
IBでは、テキストプロパティをPlainからAttributedに変更しました。これにより、XcodeのWYSIWYG風のテキストを修正することができます。素晴らしいですが、私はIBを使ってテキストを変更していません。
私はWebView(以下のコード)を使ってみました。私は、H1タグとPタグを持つ非常に基本的なHTMLファイルを作成しました。残念ながら私のプロジェクトでは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テキストを変更すると、段落見出しを作成するためにコード内のテキスト属性を変更することができますか?
編集 - これは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
私はあなたが望むものを手に入れません。モックアップを提供できますか? –