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