代码行:
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行的标识符?
谢谢,
答案 0 :(得分:3)
我认为问题是initWithString:
方法之前的星号。
[NSAttributedString *initWithString:text]
除非我遗漏了某些东西,否则星号不应该存在。
希望这有帮助!
答案 1 :(得分:1)
size
设置为字符串允许的最大大小。
例如,如果您想知道字符串的最大宽度为320,您可以这样做:
CGRect *bounding = [[NSAttributedString *initWithString:text]
boundingRectWithSize:CGSizeMake(320.0f, CGFLOAT_MAX)
options:@{ kCTFontAttributeName : @"Scurlock 20" }];
如果您不关心字符串的宽度,请使用CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX)