2012-02-10 4 views
0

私は私がフレームで最大の文字列を表示するための最小幅を見つけるしたいと思いますので、Framesetterのフォーマットに必要な最小幅を(簡単に)決める方法はありますか?

CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(attrString); 

のような文字列で初期化しましたframesetterを持っている場合。これを行う簡単な方法はありますか?私はそれを行と繰り返し実行してそこから計算することでそれを行うことができますが、内部的にこれを計算するのでメソッドを持つようなものです。

私は

CGSize sz = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0,0), NULL, CGSizeMake(1, CGFLOAT_MAX), NULL); 

を試してみましたが、それは単に1つのグリフの幅であるように思わ一定のサイズを返します。あなたが幅を探しているなら

TIA

答えて

1

、あなたは幅が拘束されないことを示すために、あなたのCGSizeMakeに幅のためCGFLOAT_MAXを渡す必要があります。

一般に、特定の幅の高さを見つけるにはCGSizeMake(myWidth、CGFLOAT_MAX)を渡し、1行のテキストの幅を見つけるにはCGSizeMake(CGFLOAT_MAX、CGFLOAT_MAX)を渡します。

+0

ありがとうございます。私が後にしているのは、単語の幅などを調べる方法です。 'これはテストです。'という単語の幅が必要です。私は弦を引き離し、自分自身を解析することでそれを行うことができます。フランセッタは内部でこれをやらなければならないので、コアテキストでそれを行う方法があるかもしれないと思ったが、この情報を得る方法はないようだ。 – daven11

+1

あなたのフレームをラインに分割し、ラインを順番に走らせると、そこにAPIがあり、個々のキャラクターの位置を知ることができます。 – MrO

関連する問題