0

最大文字数はわかっているが正確な文字列がわからない未知の文字列の CGSize を見つけるにはどうすればよいですか?

次のように NSString の「sizeWithFont」メソッドを使用して、特定の NSString のサイズを計算できることを知っています。

UIFont * font = [UIFont systemFontOfSize:15];
CGSize stringSize = [aString sizeWithFont:font]; 
CGFloat width = stringSize.width;

しかし、正確な文字列がわからず、文字列に含まれる可能性のある文字数だけがわかっている場合の方法を探しています。

4

2 に答える 2

0

方法はないと思います。

文字列を渡す必要があるのはなぜですか?

  • 文字は幅を消費し、選択したフォントごとに変更されるためです。同様に、'lll' は 'HHH' よりも少ないスペースをカバーしますが、どちらも同じ数の文字 (ここでは 3) を含んでいます。したがって、文字を提供することが必須です。

これに対する回避策

  • H、Q、W などの最大幅を消費する文字を指定し、その文字数を渡します。例: 5 文字の幅が必要な場合は、次のようなステートメントを実行します。
UIFont * font = [UIFont systemFontOfSize:15];

CGSize stringSize = [@"WWWWW"sizeWithFont:font]; // 5 times 'W'

CGFloat width = stringSize.width;

これで、他のすべての文字列確率を可能にする最大幅確率が得られます。

これは単なる回避策であり、iOS SDK で利用できる正確な解決策はないと思います。

于 2013-07-03T13:29:46.543 に答える
0

CGSize は、文字列の正確な文字がわからない場合にのみ推定できます。最悪の場合、文字列全体を「M」または「W」の文字で埋めることになる可能性があります。これは、ほとんどのフォントで最も広い文字にする必要があるためです。

int charCount = 10;
NSString *testString = @"";
for (int i = 0; i < charCount; i++) {
    testString = [testString stringByAppendingString:@"M"];
}

「i」文字を追加して、最良のケースを見積もることもできます。ほとんどの場合に最適な文字を見つけるには、多くのテストを行う必要があります。

于 2013-07-03T13:29:49.763 に答える