2013-09-26 37 views
0

我有以下几点:如何在iOS Objective-C中获取XYZ字体字符串的宽度?

-(float)getLength:(NSString *)text 
{ 
    UIFont *font = [UIFont fontWithName:@"Scurlock" size:20]; 
    CGSize size = [text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:font, 
     NSFontAttributeName, nil]]; 
    return size.width; 
} 

这是产生编译时错误:“‘sizeWithAttributes’的‘NSString的’不可见@interface声明选择”

我已经搜查,并它看起来像sizeWithAttributes消息适合于将呈现的维度获取到NSString。但是,Xcode似乎不同意。

一旦给出一个字体,也许Verdana为发展海豚,我怎么能/应该查询字符串的维度,因为他们将被呈现?

+1

我使用的NSString类别。请看这个http://stackoverflow.com/questions/19010207/nsstring-sizewithfont-alternative-in-ios7/19010369#19010369 – matthias

+0

sizeWithAttributes:仅适用于iOS7。当然,你没有在iOS6上运行这个问题? – DennyLou

回答

0

使用NSAttributedString。

- (CGFloat)widthOfString:(NSString *)string withFont:(NSFont *)font { 
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil]; 
return [[[NSAttributedString alloc] initWithString:string attributes:attributes] size].width; 
} 

here回答。

0

试试这个

一些预定义值

#define FONT_SIZE 14.0f 
#define CELL_CONTENT_WIDTH 320.0f 
#define CELL_CONTENT_MARGIN 0.0f 



NSString *text = @"abcdefghijklmnopqrstuvwxyz"; 
    CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f); 
    CGSize size = [text sizeWithFont:[UIFont fontWithName:@"XYZ" size:@"12"] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap]; 
    CGFloat height = MAX(size.height+30, 38.0f); 
相关问题