Xcode 6 має нову функцію, де шрифти та розміри шрифтів у UILabel
, UITextField
і UIButton
їх можна встановити автоматично, виходячи з класу розмірів поточної конфігурації пристрою, прямо в дошці повідомлень. Наприклад, ви можете встановити UILabel
розмір шрифту 12 для конфігурацій "будь-якої ширини, компактної висоти" (наприклад, на iPhone у пейзажі) та розміру 18 для конфігурацій "регулярної ширини, штатної висоти" (наприклад, на iPad ). Більше інформації можна отримати тут:
developer.apple.com/size_class
Ця теорія є чудовою особливістю, оскільки це може змусити програмувати різні шрифти для функцій інтерфейсу на основі конфігурації пристрою. Зараз у мене є якийсь умовний код, який встановлює шрифти на основі типу пристрою, але, очевидно, це означає, що мені потрібно встановлювати шрифти програмно скрізь у всьому додатку. Тож спочатку я був дуже в захваті від цієї функції, але я виявив, що вона має серйозну проблему фактичного використання для мене (можливо, помилка). Зауважте, що я будую проти SDK 8 і встановлюю мінімальну ціль розгортання iOS 8 , тому це не має нічого спільного з сумісністю зі старими версіями iOS.
Проблема полягає в наступному: Якщо я встановив різні розміри шрифту для різних класів розмірів і використовую шрифт "Система", наданий iOS , все працює як очікується, а розміри шрифту змінюються залежно від класу розмірів. Якщо я використовую нестандартний шрифт, наданий моєю програмою (так, у мене він встановлений правильно в моєму пакеті програм, оскільки він працює програмно) і встановити спеціальний шрифт як мітку на дошці розкадрівників XCode 6 , яка також працює як очікувалося. Але коли я намагаюся використовувати різний розмір нестандартного шрифту для різних класів розмірів, у розгортці це раптом не виходить. Єдина відмінність конфігурації - це вибраний вами шрифт (спеціальний шрифт проти системного шрифту). Натомість усі шрифти відображаються напристрій та симулятор як шрифт за замовчуванням системного розміру за замовчуванням , незалежно від класу розміру (і я перевірив за допомогою налагоджувача, що він замінює шрифт системи на фактичний, вказаний на дошці розкадрування). Таким чином, функція класу розмірів, як видається, порушена для користувацьких шрифтів. Також цікаво, що спеціальні шрифти фактично відображають та регулюють розмір належним чином на панелі XCode 6 "Попередній перегляд" для контролера перегляду: він перестає працювати лише під час роботи в реальній системі iOS (що змушує мене думати, що я правильно його налаштовую) .
Я спробував кілька різних спеціальних шрифтів, і, схоже, він не працює для жодного з них, але він завжди працює, якщо натомість я використовую "Система".
У будь-якому разі, хтось ще бачив цю проблему в Xcode 6 ?
Будь-які ідеї щодо того, чи це помилка в iOS 8, Xcode чи щось таке
Я помиляюся?
Як я вже сказав, єдине вирішення, яке я знайшов, - це продовжувати програмно встановлювати шрифти, як я був для приблизно трьох версій iOS, тому що це працює.
Але я хотів би мати можливість використовувати цю функцію, якби я міг змусити її працювати зі спеціальними шрифтами. Використання шрифту System не прийнятно для нашого дизайну.
ДОДАТКОВІ ІНФОРМАЦІЇ: Станом на Xcode 8.0 помилка виправлена.