1

コード行:

CGRect *bounding = [[NSAttributedString *initWithString:text]
    boundingRectWithSize:size
                 options:[[NSDictionary alloc]
        initWithObjectsAndKeys:kCTFontAttributeName, @"Scurlock 20", nil]
];

コンパイルしようとすると「予期される識別子」のエラーが発生します。以前は「options:」がありませんでしたが、それを追加しても変更されませんでした。

text という名前の NSString 変数の境界を取得しようとしていますが、何が問題なのかを知りたいです (おそらく、構文を壊したためです)。

サイズは CGSizeZero と同じです。

このコード行を修正して、必要なものを表示するにはどうすればよいですか?

- 編集 -

このコードで同じエラーが発生します。

-(float)getLength:(NSString *)text
{
    UIFont *font = [UIFont fontWithName:@"Scurlock" size:20];
    CGSize size = CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX);
    CGRect *bounding = [[NSAttributedString
            *initWithString:text] boundingRectWithSize:size
        options:[[NSDictionary alloc] initWithObjectsAndKeys:
            kCTFontAttributeName, @"Scurlock 20", nil]];
    return bounding->size.width;
}

CGFloatZero を使用すると、ランタイムの不安定性とクラッシュが発生する可能性がありますが、構文エラーの原因は別の何かであると予想されます。

CGRect 行に入力する必要がある識別子を見逃した場所はありますか?

ありがとう、

4

2 に答える 2

3

initWithString:問題はメソッドの前のアスタリスクだと思います。

[NSAttributedString *initWithString:text]

何かが欠けていない限り、そのアスタリスクはそこにあるべきではありません。

お役に立てれば!

于 2013-09-23T19:11:09.213 に答える
1

size文字列に許容される最大サイズに設定する必要があります。

たとえば、最大幅が 320 の文字列の高さを知りたい場合は、次のようにします。

CGRect *bounding = [[NSAttributedString *initWithString:text]
    boundingRectWithSize:CGSizeMake(320.0f, CGFLOAT_MAX)
                 options:@{ kCTFontAttributeName : @"Scurlock 20" }];

文字列の幅が気にならない場合は、次を使用しますCGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)

于 2013-09-23T18:52:00.330 に答える