测量字符串的像素宽度

时间:2009-09-16 21:22:17

标签: cocoa-touch graphics nsstring width

我需要测量Cocoa Touch中字符串的像素宽度。任何人都可以向我指出一个解释如何做到这一点的链接吗?

3 个答案:

答案 0 :(得分:27)

在iPhone OS上,它略有不同,而是查看NSString UIKit Additions Reference。这个想法与Cocoa for Mac OS X中的想法相同,但有更多的方法。

对于单行文字:

- (CGSize)sizeWithFont:(UIFont *)font 
              forWidth:(CGFloat)width 
         lineBreakMode:(UILineBreakMode)lineBreakMode

对于多行文字,请使用:

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

使用UILineBreakMode作为单行文本的参数可能会造成混淆,但这是因为换行符也用于定义如何截断文本。

答案 1 :(得分:5)

查看NSString Application Kit Additions Reference,特别是boundingRectWithSize:options:attributes:。该例程返回的值应该为您提供NSString的宽度。

答案 2 :(得分:0)

现已弃用上述解决方案。检查iOS 7 +

 sizeWithFont:constrainedToSize:lineBreakMode 

现已弃用。使用下面的代码段,

UIFont *font=[UIFont fontWithName:@"Arial" size:16.f];

NSString *name = @"APPLE";

CGSize size = [name sizeWithAttributes:@{NSFontAttributeName:font}];