私は今、この問題を 1 週間解決しようとしています。頭に浮かんだ多くのアイデアをテストしましたが、NSStringカスタム フォントのサイズを正しく計算できません。
UITextViewテキストを含むものと、UIViewの行の行番号を描画するものがありUITextViewます。問題は、NSString UIKit追加機能が のサイズの計算でタブ幅を無視していることNSStringです。
ここの図では、7 行目ではっきりとわかります。これは、 でレンダリングされた場合に改行された行でUITextViewあり、その後、すべての行が影響を受けます。

使用しているフォントはAdobe Source Code Proです。
NSString UIKitAdditionsのすべての方法を試しましたが、成功しませんでした。
sizeWithFont
sizeWithFont:forWidth:lineBreakMode:
sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
また、文字列内のすべてのタブを 4 つのスペースに置き換えようとしましたが、これは役に立ちますが、それでも常に機能するとは限りません。一部の行では役立ちますが、そうでない行もあります。
NSString高さを正しく計算する方法はありますか?CoreText多分?
1 つの小さなメモ。プロトコルのジオメトリヒットテストメソッドを使用してこれを解決しようとしましたUITextInputが、それらが機能している間、シミュレーターでの CPU 負荷は 100% であるため、実際のデバイスでは、特に約 1500 以上のファイルをロードすると、アプリが強制終了されます。コード行。
そして、これがLineNumbersView.mに使用しているコードの要点です。