找到NSString的正确宽度

时间:2011-04-29 23:23:39

标签: iphone objective-c cocoa-touch ios nsstring

在textview中包含文本的因素取决于哪些因素。我的textview的宽度是160像素,我使用下面提到的代码计算了传入文本的宽度,结果是157像素,但这个文本包含在3行......为什么会这样?

CGSize size = [myText sizeWithFont:textViewFont 
            constrainedToSize:textView.frame.size 
            lineBreakMode:UILineBreakModeWordWrap];

CGFloat textWidth = size.width;

我想将文本的宽度除以textview的宽度以获得行数。但计算返回1,而我可以看到在模拟器上的textview中有3行。

2 个答案:

答案 0 :(得分:10)

- (CGSize)sizeWithFont:(UIFont *)font
     constrainedToSize:(CGSize)size
         lineBreakMode:(UILineBreakMode)lineBreakMode

如果字符串的大小受到作为参数给定的大小的约束,则计算字符串的大小,如果字符串对于给定的大小约束而言太长,则会被截断以适合。

要获得字符串的宽度,如果它在没有约束的情况下在一行上绘制,则使用:

- (CGSize)sizeWithFont:(UIFont *)font

请参阅:http://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html

注意:从iOS7开始

- (CGSize)sizeWithFont:(UIFont *)font
不推荐使用

,而是使用:

- (CGSize)sizeWithAttributes:(NSDictionary *)attrs

答案 1 :(得分:1)

尝试将传递给该方法的大小的height设置为巨大的。否则返回的大小将始终显示文本视图的实际高度(假设完整的字符串不适合给定的高度)。