私の目標は、TextKit を使用して、特定の単語の斜体化、テキスト サイズの設定などを行うことです。
まず、テキスト文字列内の文字を強調表示しようとしています。私は TextKit (そして正直なところプログラミング全般) に慣れていないので、obc.io issue #5 の構文強調トピックに従っています。
作成した UITextView に組み込まれている NSLayoutManager を使用すると、例外がスローされずにテキストが画面に表示されます。UITextView をビュー コントローラー (下記) の NSTextStorage サブクラスのレイアウト マネージャーとして設定すると、無効なグリフ インデックスの例外のエラーが発生します。
_textStorage = [BBRSyntaxHighlightTextStorage new];
[_textStorage addLayoutManager: self.readerTextView.layoutManager];
コンソール出力は次のとおりです。
_NSLayoutTreeLineFragmentRectForGlyphAtIndex invalid glyph index 528
2013-12-01 15:23:24.949 BibleReader[6077:70b] !!! _NSGlyphTreeInvalidateGlyphsForCharacterRange invalid char range 1
2013-12-01 15:23:24.956 BibleReader[6077:70b] !!! _NSLayoutTreeLineFragmentRectForGlyphAtIndex invalid glyph index 528
2013-12-01 15:23:24.957 BibleReader[6077:70b] !!! _NSGlyphTreeInvalidateGlyphsForCharacterRange invalid char range 1
2013-12-01 15:23:24.957 BibleReader[6077:70b] !!! _NSGlyphTreeInvalidateGlyphsForCharacterRange character count mismatch
2013-12-01 15:23:24.958 BibleReader[6077:70b] !!! _NSLayoutTreeLineFragmentRectForGlyphAtIndex invalid glyph index 4040
2013-12-01 15:23:24.959 BibleReader[6077:70b] !!! _NSGlyphTreeInvalidateGlyphsForCharacterRange invalid char range 1
Apple のテキスト プログラミング ガイドを何度も読み、テキスト システムがどのように確立されているかを理解していると思いますが、グリフ数がグリフ数を超える理由がわかりません...
viewController と NSTextStorage サブクラスの gist をそれぞれhereとhereに作成しました。