2013-09-26 26 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); 
相關問題