Как поддерживать динамический тип в UILabel
и UITextView
в iOS 7? Я адаптирую один из наших проектов для iOS 7 и хотел бы поддержать эту функцию доступности. Я не могу найти конкретный способ обучения на нем на сайте разработчика Apple iOS. Любые ссылки или пример кода будут оценены.
Как поддерживать динамический тип в ярлыках в iOS 7
Ответ 1
Если вы используете новые методы UIFont
, то вы в значительной степени там - вам просто нужно добавить наблюдателя для прослушивания изменений.
Вместо того, чтобы устанавливать определенный размер шрифта, вы должны использовать preferredFontForTextStyle:
и связанные с ним методы при стилизации ваших меток (если вы используете Interface Builder, вы можете выбрать стиль непосредственно в инспекторе). Например:
self.label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
После этого вы должны прослушать UIContentSizeCategoryDidChangeNotification
. Когда вы получите это уведомление, вы должны разметить свои метки для поддержки недавно выбранного размера (если вы используете автозапуск, это обычно так же просто, как отправка invalidateIntrinsicContentSize
в ваши представления).
Если вы ищете официальную документацию, посмотрите на Руководство по программированию текста.
Ответ 2
В Swift 3 и iOS 10 вы можете использовать
headline.font = UIFont.preferredFont(forTextStyle: UIFontTextStyleHeadline)
headline.adjustsFontForContentSizeCategory = true
См. этот отличный пост для получения дополнительной информации, особенно, как поддерживать pre iOS 10.