sizeWithAttributes дает мне другую ширину и высоту CGSize - PullRequest
0 голосов
/ 10 января 2019

В 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

Я что-то не так делаю? I

1 Ответ

0 голосов
/ 10 января 2019

Атрибутивное текстовое описание метода подразумевает разницу в поведении (выделено мной жирным шрифтом) ...

Этот метод возвращает дробные размеры ; использовать возвращенный размер для размера представления, вы должны повысить его значение до ближайшего более высокого целого числа, используя функция ceil.

В нем также говорится, что целые размеры должны быть вычислены с ceil() (другими словами, округление). Это заставляет ваш эксперимент работать как положено ...

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