web-dev-qa-db-fra.com

Comment prendre en charge le type dynamique dans les étiquettes dans iOS 7?

Comment prendre en charge Dynamic Type dans UILabel et UITextView dans iOS 7? J'adapte l'un de nos projets pour iOS 7 et j'aimerais prendre en charge cette fonctionnalité d'accessibilité. Je ne trouve pas le tutoriel spécifique sur le site de développeur iOS d'Apple.

33
jaytrixz

Si vous utilisez les nouvelles méthodes UIFont, vous y êtes pratiquement - il vous suffit d'ajouter l'observateur pour écouter les changements.

Plutôt que de définir une taille de police spécifique, vous devez utiliser le preferredFontForTextStyle: et les méthodes associées lors du stylisme de vos étiquettes (si vous utilisez Interface Builder, vous pouvez sélectionner un style directement dans l'inspecteur). Par exemple:

self.label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];

Une fois que vous avez fait cela, vous devriez écouter le UIContentSizeCategoryDidChangeNotification. Lorsque vous recevez cette notification, vous devez disposer vos étiquettes pour prendre en charge la nouvelle taille sélectionnée (si vous utilisez la mise en page automatique, cela est normalement aussi simple que d'envoyer invalidateIntrinsicContentSize à vos vues).

Si vous recherchez une documentation officielle, jetez un œil au Guide de programmation de texte .

57
lxt

Dans Swift 3 et iOS 10, vous pouvez utiliser

headline.font = UIFont.preferredFont(forTextStyle: UIFontTextStyleHeadline)
headline.adjustsFontForContentSizeCategory = true

Voir cet excellent article pour plus d'informations, en particulier comment prendre en charge la version antérieure à iOS 10.

2
Suragch