sizeWithAttributes为我提供了不同的CGSize宽度和高度

时间:2019-01-10 15:12:21

标签: ios objective-c cocoa ios7

在iOS 7中,sizeWithFont:已过时。建议的替换方法是sizeWithAttributes:
但是当我将方法从sizeWithFont:更改为sizeWithAttributes:
我得到了不同的价值观。

这是我的代码:

CGSize temp = [opt.option sizeWithFont:[UIFont fontWithName:fontFamily size:[self randomFontSize]]];
NSLog(@"Old SizeWithFont value %f x %f",temp.height, temp.width);

NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:fontFamily size:[self randomFontSize]]};
temp = [opt.option sizeWithAttributes: attributes];
NSLog(@"New SizeWithAttribute has value %f x %f",temp.height, temp.width);

输出为:

linespacing 16.33, fontsize 16.00
Old SizeWithFont value 18.000000 x 47.000000
New SizeWithAttribute has value 17.875000 x 46.250000

我做错什么了吗?我

1 个答案:

答案 0 :(得分:2)

属性文本方法描述暗含行为差异(由我添加粗体)...

  

此方法返回分数大小;使用返回的尺寸   视图,您必须使用将它的值提高到最接近的较高整数   ceil函数。

它还指出,整数大小应使用ceil()计算(换句话说,是向上取整)。这样做可以使您的实验按预期进行...

NSLog(@"New SizeWithAttribute has value %f x %f",ceil(temp.height), ceil(temp.width));