1

MacOS NSAttributedString initWithRTFに相当するiOSとは何ですか?

アプリケーションキットは、RTF、RTFD、およびHTML(添付ファイルの有無にかかわらず)、グラフィックス属性(フォントおよびルーラー属性を含む)、属性付き文字列を描画するためのメソッド、および重要な言語単位を計算するためのメソッドのサポートを追加することにより、FoundationのNSAttributedStringクラスを拡張します。

- (id)initWithRTF:(NSData *)rtfData documentAttributes:(NSDictionary **)docAttributes

iOSアプリケーションでRTFデータの短いストリームを処理する必要があります。ありがとうございました!

4

1 に答える 1

4

iOSには同等のものはありません。のiOSバージョンにNSAttributedStringはCoreTextに必要な機能のみがあり、CoreText自体にはUIクラスに必要な機能のみがあり、これにはRTF処理は含まれていません。

私の知る限り、少なくとも5.0の時点でUIWebViewは、RTFを処理する唯一の方法です。https://developer.apple.com/library/ios/#qa/qa1630/_index.htmlを参照してください。これは5.1で変更された可能性があります。これは、Appleの他のアプリの一部が現在リッチテキストを処理しているように見えるためです(ただし、これらのアプリはからUITextViewに変更されたばかりである可能性がありUIWebViewます…)。


UIWebViewWebビューは属性付きテキストを作成することはなく、代わりにHTMLとCSSを作成するため、RTFから属性付きテキストにアクセスする方法はありません。

幸いなことに、このHTMLとCSSはDOMで利用できます。少なくとも一部のタイプでは、これは当てはまりません。表示されるのは、アクセスできないWebKit内の魔法のコードによってレンダリングされる不透明なラッパーだけですが、RTFはそれらのタイプの1つではありません。

Safari Web Inspectorを使用して、iPhoneでサンプルRTFファイルを開き、DOMを確認しました。次のようなノードでいっぱいです。

<span class="s2"><span class="bumpedFont16">m a test file. This is some </span></span>
<span class="s3"><span class="bumpedFont16">bold</span></span>

…これらのクラスは<style>、最初に使用されるタグの直前にインラインタグで定義されます。

したがって、テキストのあるノードを歩く場合、そのテキストは属性付きの文字範囲のようなものであり(ただし、実際に開始インデックスと終了インデックスが必要な場合は、自分でカウントする必要があります…)、その計算スタイルはおおよそ属性のようなものです。辞書。もちろん、「ほぼ同じ」は「同一」ではありません。計算されたスタイルは次のようになります。

direction: ltr; display: inline; font-family: 'Times New Roman'; font-size: 22px;
font-weight: bold; height: auto; margin-bottom: 0px; margin-top: 0px;
padding-right: 0px; text-align: left; width: auto;

したがって、実際にはNSAttributedStringとの互換性はなく、(もちろん、最終目標がHTMLの作成である場合を除いて)それほど優れていません…しかし、少なくとも使用できるものはあります。

于 2012-06-06T21:37:54.523 に答える