17

我需要测量 Cocoa Touch 中字符串的像素宽度。谁能给我指出一个解释如何做到这一点的链接?

4

3 回答 3

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对单行文本使用as 参数可能会造成混淆,但这是因为换行符也用于定义如何截断文本。

于 2009-09-17T06:27:19.247 回答
5

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

于 2009-09-16T21:33:56.173 回答
0

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

 sizeWithFont:constrainedToSize:lineBreakMode 

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

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

NSString *name = @"APPLE";

CGSize size = [name sizeWithAttributes:@{NSFontAttributeName:font}];
于 2015-09-28T04:15:42.470 回答