找到NSString的正确宽度

Abh*_*nav 5 iphone cocoa-touch objective-c nsstring ios

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

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

CGFloat textWidth = size.width;
Run Code Online (Sandbox Code Playgroud)

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

mon*_*ker 10

- (CGSize)sizeWithFont:(UIFont *)font
     constrainedToSize:(CGSize)size
         lineBreakMode:(UILineBreakMode)lineBreakMode
Run Code Online (Sandbox Code Playgroud)

计算字符串的大小,如果它将被作为参数给定的大小约束,如果字符串对于给定的大小约束来说太长,它将被截断以适合.

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

- (CGSize)sizeWithFont:(UIFont *)font
Run Code Online (Sandbox Code Playgroud)

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

注意:从iOS7开始

- (CGSize)sizeWithFont:(UIFont *)font
Run Code Online (Sandbox Code Playgroud)

不推荐使用,而是使用:

- (CGSize)sizeWithAttributes:(NSDictionary *)attrs
Run Code Online (Sandbox Code Playgroud)