2011-07-24 8 views
7

私の目的は簡単です:UILabelから、ラベルのテキスト内の部分文字列の矩形を取得します。広範な検索から、これを処理するための何も組み込まれていないように見えます。他の人たちも同様の質問をしてきましたが、Stackoverflowではこれまで完全に答えられていません。UILabelはテキストの部分文字列のCGRectを取得します

// Something like this perhaps (added as a category) 
CGRect rect = [myLabel rectForRange:NSMakeRange(3, 5)]; 

それがために使用することができるものの例(ちょうど私が探してるものを明確にする):

example of rect

答えて

7

これはほとんどの場合、1文字のrectに必要だったので、私は狂ったし、最も基本的なUILabelのrectを正確に計算できるコードを書きました。標準のUILineBreakModeとテキストの配置。

私は公衆にコードを公開して、それを改善して改善することを望んでいました。特にテキストレンダリングについてあまり知らないからです!

コード:

https://gist.github.com/1278483

+0

こんにちはエリック。もしあなたが私を助けることができれば本当に素晴らしいだろう[ここ](http://stackoverflow.com/questions/8860520/find-coordinates-of-a-substring-in-uilabel)。 – Nitish

2

あなたがおっしゃるとおり、これはビルトインではありませんUILabelの部分。

サブタイトルUILabelを使用する場合はCoreTextを使用して-drawRect:を実装すれば、compute the rect for a range via CTLineGetOffsetForStringIndex(), CTFrameGetLineOrigins(), and CTLineGetTypographicBounds()にできるようになります。範囲内のテキストが改行を超えて配置されると、これは複雑になります。複数の矩形が必要になることがあります。

関連する問題