- [NSString drawInRect:]的大小可以由字符串的内容决定吗?

时间:2013-06-11 22:50:32

标签: ios cocoa-touch graphics nsstring

我的代码中有一个名为theString的长字符串,我将其传递给drawRect:方法在屏幕上绘制。

    -(void)drawRect:(CGRect)rect
{
    [super drawRect:rect];
    [theString drawInRect:CGRectMake(0, 0, self.bounds.size.width, 200)]; 
}

如您所见,我可以将宽度设置为屏幕大小,但必须手动设置高度,这在传递的字符串长度不同时会出现问题。如何自动检测框架需要的高度?同样在将来,我可能会将其扩展为包含不同字体样式的属性字符串,因此计算字符可能不是一个很好的选择。

2 个答案:

答案 0 :(得分:2)

您可以做的是获取文字所具有的字体

UIFont *myFont = [UIFont fontWithName:@"SOME_NAME" size:16];

然后使用NSString的方法sizeWithFont:,如下所示:

CGSize theStringSize = [theString sizeWithFont:myFont];

最后,设置字符串的宽度和高度:

[theString drawInRect:CGRectMake(0, 0, theStringSize.width, theStringSize.height)];

希望这有帮助!

答案 1 :(得分:-1)

你可以RTLabel来做。从此链接下载RTLabel.h

RTLabel.m

  

使用它:   将文本设置为RTLabel对象,它也将是handel HTML字符串并获得RTLabel对象的大小,它将是您文本的大小。