2009-09-27 76 views
0

我试图在我的Iphone应用程序上使用未记录的setApplicationBadgeString方法来放置文本徽章。我遇到的问题是获得正确的字符数。有时我可以适应角色,有时它会用点代替我的部分字符串。我在UILabel上也看到了同样的行为,如果文本不合适,它会被“...”截断。我怎样才能以编程方式找出在文本徽章的特定情况下文本将被截断的时间,因为我无法检查其大小 - 它实际上似乎不是恒定的。谢谢!Iphone应用程序文本徽章长度

回答

1

由于字符的宽度不同,字符的数量会有所不同。 a W比* l **更长,所以一堆W将比一堆l更快地被截断。

通过试验和错误,你可以使用的NSString的方法- (CGSize)sizeWithFont:(UIFont *)字体找出允许在徽章的最大宽度。你将不得不弄清徽章使用的字体大小。你的代码应该会看起来像这样...

// I'm not sure what the badge font size is, you will have to test for this 
UIFont *font = [UIFont systemFontOfSize:12]; 

// Keep adding 1's to the badge string until you get the ...'s, then you will 
// know the maximum size of the badge string! 
NSString *badgeString = @"111";  
NSLog(@"width: %f", [badgeString sizeWithFont:font].width); 

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeString];