Пользовательский размер шрифта в классах размера XCode6 не работает должным образом с пользовательскими шрифтами

В Xcode 6 появилась новая функция, позволяющая автоматически устанавливать шрифты и размеры шрифтов в UILabel, UITextField и UIButton на основе класса размеров текущей конфигурации устройства прямо в раскадровке. Например, вы можете установить UILabel для использования размера шрифта 12 в конфигурациях «любая ширина, компактная высота» (например, на iPhone в альбомной ориентации) и размера 18 в конфигурациях «обычная ширина, обычная высота» (например, на iPad). Более подробная информация доступна здесь:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/Size-ClassSpecificLayout.html

Это действительно замечательная функция в теории, потому что это может сделать ненужным программную установку различных шрифтов для функций пользовательского интерфейса в зависимости от конфигурации устройства. Прямо сейчас у меня есть некоторый условный код, который устанавливает шрифты в зависимости от типа устройства, но, очевидно, это означает, что я должен устанавливать шрифты программно повсюду в приложении. Так что изначально я был очень рад этой функции, но обнаружил, что она имеет серьезную проблему в реальном использовании для меня (возможно, ошибка). Обратите внимание, что я собираюсь использовать SDK 8 и установить минимальную цель развертывания iOS 8, так что это не имеет ничего общего с совместимостью со старыми версиями iOS.

Проблема заключается в следующем: если я устанавливаю разные размеры шрифта для разных классов размеров и использую «Системный» шрифт, предоставляемый iOS, все работает как положено, и размеры шрифтов меняются в зависимости от размера. Если я использую пользовательский шрифт, предоставленный моим приложением (да, он правильно настроен в моем комплекте приложений, так как он работает программно) и задаю для настраиваемого шрифта метку в раскадровке XCode 6, которая также работает должным образом. Но когда я пытаюсь использовать разные размеры пользовательского шрифта для разных классов размеров, в раскадровке это неожиданно не работает. Единственным отличием в конфигурации является шрифт, который я выбрал (пользовательский и системный шрифт). Вместо этого все шрифты отображаются на устройстве и в симуляторе в качестве системного шрифта по умолчанию с размером по умолчанию, независимо от класса размера (и я проверил с помощью отладчика, что он заменяет системный шрифт фактическим, указанным в раскадровке) , Таким образом, в основном функция класса размера не работает для пользовательских шрифтов. Кроме того, что интересно, пользовательские шрифты действительно отображают и корректно изменяют размер на панели «Предварительный просмотр» XCode 6 для контроллера представления: он перестает работать только при работе на реальной системе iOS (что заставляет меня думать, что я его настраиваю) правильно).

Я пробовал несколько разных пользовательских шрифтов, и, похоже, они не работают ни для одного из них, но они всегда работают, если я использую вместо них «Система».

В любом случае, кто-нибудь еще видел эту проблему в Xcode 6? Любые идеи о том, это ошибка в iOS 8, XCode, или я что-то не так делаю? Единственный обходной путь, который я нашел, как я уже сказал, заключается в том, чтобы продолжить программно устанавливать шрифты, как я делал это для 3-х версий iOS, потому что это работает. Но я бы хотел использовать эту функцию, если бы смог заставить ее работать с пользовательскими шрифтами. Использование системного шрифта неприемлемо для нашего дизайна.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: Начиная с Xcode 8.0, ошибка исправлена.

Ответы на вопрос(14)

Ваш ответ на вопрос