ios - NSString sizeWithFont forWidth 返回错误值

标签 ios objective-c nsstring

我有一个奇怪的问题。我的 sizeWithFont: forWidth: lineBreakMode:NSLineBreakByWordWrapping正在返回错误的值。我有一个字符串数组,需要放在一个整洁的“表”中。单元格基本上是 UIViewUILabel s 在其中。为了分配初始化单元格 View 和带有正确框架的标签,我需要预先计算单元格的所需高度和包装 View 的总高度,因为所有单元格都将放置在另一个 View 中。我的代码如下所示:

#define kStandardFontOfSize(x)  [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:x]

CGFloat size = 0.0f; //for computing the total size as cells will be placed in another view
items = [NSArray arrayWithObjects:@"You have 23 new followers", @"1125 new likes", @"Successful week with 24 new Twitter followers and 60 new email subscribers", @"1125 new tickets", nil];

for (NSString *item in items)
{
    if ([item sizeWithFont:kStandardFontOfSize(16) forWidth:100 lineBreakMode:NSLineBreakByWordWrapping].height < 25)
        size += 70; //either the cell will be 70 (140) pixels tall or 105 (210)pixels
    else
        size += 105;
    NSLog(@"%f, %f, %@", [item sizeWithFont:kStandardFontOfSize(16) forWidth:100 lineBreakMode:NSLineBreakByWordWrapping].width, [item sizeWithFont:kStandardFontOfSize(16) forWidth:100 lineBreakMode:NSLineBreakByWordWrapping].height, item);
}

但是日志返回了非常奇怪的值:
82.000000, 20.000000, You have 23 new followers
99.000000, 20.000000, 1125 new likes
70.000000, 20.000000, Successful week with 24 new Twitter followers and 60 new email subscribers
67.000000, 20.000000, 1125 new tickets

“1125个新点赞”的宽度怎么可能是99,而长串只有70呢?高度肯定应该大于20还是?

最佳答案

尝试使用 [[NSString string] sizeWithFont:UIFont constrainedToSize:CGSize lineBreakMode:(NSLineBreakMode)]

关于ios - NSString sizeWithFont forWidth 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18254729/

相关文章:

ios - 从 View Controller 中取出 collectionview 委托(delegate)和数据源

ios - 如何跨多个应用程序识别 iOS 设备?

ios - 我们可以允许从两个线程同时操作 NSMutableArray 的不同 "indexes"

string - 将每个句子的首字母大写

objective-c - NSString 获取字符

ios - 如何选择从头到指定字符的字符串?

ios - 图像 slider 页面打印问题?

ios - 重新启动应用程序时导入 header 错误 Swift

iphone - 知道显示的是哪个键盘

objective-c - 灵活空间与固定空格键按钮项目