1

代码行:

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

当我尝试编译它时,出现“预期标识符”错误。早些时候它没有“选项:”,但添加它并没有改变它。

我正在尝试获取名为 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 回答