見出しと段落を含む iOS アプリでビューを作成したいと考えています。h1 タグと p タグを含む HTML ページのように見えますが、iOS でそのようにするにはどうすればよいですか? どのコントロールを使用すればよいですか? コード内の動的オブジェクトではなく、UI Builder で作業することをお勧めします。
私が試したのはラベルの使用ですが、うまくいきませんでした。
見出しと段落を含む iOS アプリでビューを作成したいと考えています。h1 タグと p タグを含む HTML ページのように見えますが、iOS でそのようにするにはどうすればよいですか? どのコントロールを使用すればよいですか? コード内の動的オブジェクトではなく、UI Builder で作業することをお勧めします。
私が試したのはラベルの使用ですが、うまくいきませんでした。
ラベルが機能しなかったのはなぜですか? UIView をサブクラス化して、2 つのラベル (見出しと段落) を保持し、適切にスタイルを設定することをお勧めします。さらにアドバイスが必要な場合は、ラベルに関する問題と、何を達成しようとしているのかを明確にする必要があります。
これを行うための長年のアプローチは、それぞれ異なるスタイル/フォント/色の複数のラベル (UILabel) を使用することです。これは難しくありませんが、複数行のラベルを使用すると、iOS はテキストを垂直方向に中央揃えにしようとするため、 を使用してコードでラベルの高さをレイアウトし、コードでsizeWithFont:forWidth:lineBreakMode:
ラベルを正しく配置する必要があります。
これは難しいことではないことを強調しなければなりません。面倒ですが、うまくいきます。
しかし、iOS 6 では、この問題は完全に解決されています。NSAttributedString を使用するだけです。これにより、さまざまなスタイル/フォント/色の複数の段落で構成される1 つの文字列を作成できます。これは、複数の UILabel オブジェクトを使用して以前にシミュレートしようとしていたことを実際に行う方法です。マージン、段落間の間隔などを指定できます-全体が機能します。すごいね。
iOS 6 の属性付き文字列に関する WWDC 2012 のビデオを見ることをお勧めします。ただし、UILabel が属性付き文字列を表示する力の源であるという彼らの繰り返しのマントラを信じないでください。たとえば、アプリを書き直したときに、複数段落の属性付き文字列が常に UILabel で適切に機能するとは限らないことに気付きました。drawRect:
そのため、新しい NSAttributedString メソッドを使用して、カスタム ビューに直接描画することで、属性付き文字列をレイアウトするのが最も簡単であることがわかりましたdrawWithRect:options:context:
。