- PVSM.RU - https://www.pvsm.ru -
В июне 2016 года в App Store появилось разработанное нами приложение ИЛЬ ДЕ БОТЭ [1]. Клиент попросил нас использовать шрифт Carisma [2]. К системным шрифтам платформы iOS он не относится, что можно понять после попытки найти его здесь [3]. Работая над приложением, я отметил, что символы валют, попадающие в диапазон от U+20B6 (символ турского ливра) до U+20BE (символ грузинского лари) и набранные шрифтом, не входящим в число системных, снижают производительность приложения. Символ рубля — как раз из указанного диапазона.
Найдите отличия:
Давайте-ка это обсудим.
Разберёмся подробнее, в каких именно ситуациях всё тормозит снижается производительность. Для этого разобьём представление строки с символом валюты на составные части:
NSString *htmlString = @"<p>500 ₽</p> ";
self.string = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
self.string = [[NSAttributedString alloc] initWithString: @"500 u20BD"];
NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setCurrencyCode:@"RUB"];
[numberFormatter setMaximumFractionDigits:0];
self.string = [[NSAttributedString alloc] initWithString:[numberFormatter stringFromNumber:@500]];
Начав комбинировать сущности, я обнаружил, что производительность снижают следующие сочетания:
Эксперимент заключался в измерении нагрузки на процессор при пролистывании списка, элементы которого содержали символ рубля. Средняя нагрузка на процессор для нормального состояния не превышала 10%, а если была проблема, нагрузка колебалась в районе 30-80%, что можно видеть на гифках.
Чтобы приложение вело себя нормально, нужно избегать тех сочетаний, что я выявил, или использовать для символов валют системный шрифт San Francisco, а также шрифты из семейства Helvetica Neue. Но это минимальные требования. Истинная же причина увеличения нагрузки для меня осталась загадкой, и если кто-то разбирается в сути вопроса — делитесь соображениями в комментариях.
Автор: Лайв Тайпинг
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios-development/210185
Ссылки в тексте:
[1] ИЛЬ ДЕ БОТЭ: http://livetyping.com/ru/portfolio/ile-de-beaute
[2] Carisma: https://www.myfonts.com/fonts/castletype/carisma/
[3] здесь: http://iosfonts.com/
[4] Источник: https://habrahabr.ru/post/312294/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.