Xcode 6 имеет новую функцию, в которой шрифты и размеры шрифтов в UILabel, UITextField и UIButton могут быть установлены автоматически на основе класса размера текущей конфигурации устройства прямо в раскадровке. Например, вы можете установить UILabel для использования размера шрифта 12 на "любой ширине, компактной высоте" (например, на iPhone в ландшафтном дизайне) и размере 18 на конфигурациях "обычной ширины, обычной высоты" (например, на iPads). Дополнительная информация доступна здесь:
Это действительно замечательная функция в теории, потому что это может сделать ненужным программный набор различных шрифтов для функций пользовательского интерфейса на основе конфигурации устройства. Прямо сейчас у меня есть условный код, который устанавливает шрифты на основе типа устройства, но, очевидно, это означает, что я должен устанавливать шрифты программно повсюду в приложении. Поэтому я действительно был в восторге от этой функции, но я обнаружил, что у меня есть серьезная проблема в фактическом использовании для меня (возможно, ошибка). Обратите внимание, что я строю против SDK 8 и устанавливаю минимальную цель развертывания iOS 8, поэтому это не имеет ничего общего с совместимостью со старыми версиями iOS.
Проблема заключается в следующем: Если я устанавливаю разные размеры шрифтов для разных классов размеров и использую шрифт "System", предоставляемый iOS, все работает так, как ожидалось, и размеры шрифта меняются в зависимости от класса размера. Если я использую специальный шрифт, предоставляемый моим приложением (да, я правильно настроил его в своем пакете приложений, так как он работает программно) и установите пользовательский шрифт на метку в раскадровке XCode 6, которая также работает так, как ожидалось. Но когда я пытаюсь использовать разные размеры пользовательского шрифта для разных классов размера, в раскадровке он внезапно не работает. Единственная разница в конфигурации - это выбранный мной шрифт (пользовательский вариант по сравнению с системным шрифтом). Вместо этого все шрифты отображаются на устройстве и симуляторе как стандартный системный шрифт по умолчанию, независимо от класса размера (и я проверил через отладчик, что он заменяет системный шрифт для фактического, указанного в раскадровке), Таким образом, в основном функция класса размера не работает для пользовательских шрифтов. Кроме того, интересно, что пользовательские шрифты фактически отображают и правильно регулируют размер на панели "Просмотр" XCode 6 для контроллера вида: он работает только при запуске в реальной системе iOS, которая перестает работать (что заставляет меня думать, что я настраиваю его правильно).
Я попробовал несколько разных пользовательских шрифтов и, похоже, не работает ни для одного из них, но всегда работает, если вместо этого использовать "Систему".
В любом случае, кто-нибудь еще видел эту проблему в Xcode 6? Любые идеи о том, является ли это ошибкой в iOS 8, Xcode или что-то, что я делаю неправильно? Единственное обходное решение, которое я нашел, как я уже сказал, заключается в том, чтобы продолжать программно устанавливать шрифты, как я был примерно для 3-х версий iOS, потому что это действительно работает. Но я бы хотел использовать эту функцию, если бы мог заставить ее работать с пользовательскими шрифтами. Использование шрифта System неприемлемо для нашего дизайна.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Начиная с Xcode 8.0 исправлена ошибка.