web-dev-qa-db-fra.com

Comment changer dynamiquement la taille de la police dans la mise en page automatique iOS?

Je souhaite insérer mon texte dans un UILabel, mais pour un iPhone différent, la taille du UILabel change, ma mise en page étant automatique, mais je le texte est coupé.

Est-il possible de définir une contrainte quelconque pour que le texte tienne dans le UILabel de manière dynamique?

Voir ici le texte a été coupé, en raison de la résolution d'écran différente

28
Muntaqeem Labbaeik

Vous devez utiliser autoshrink .

Puisque tous les iPhones ont le même Compact width classe de taille en mode portrait, vous ne pouvez pas compter sur cela pour gérer la taille de votre étiquette.


Les aperçus sont pour iPhone5, iPhone6 ​​et iPhone 6+

enter image description here

Dans l'inspecteur, vous devez sélectionner l'échelle de police minimale ou la taille minimale de la police devant le raccourci automatique. Cela permet au contenu de changer la taille de la police pour l'adapter à l'étiquette.

Ici, je règle l'échelle de police minimale à 0,5, de sorte que la taille minimale est égale à la moitié de la taille actuelle (31.0). Le texte tentera de s’ajuster jusqu’à atteindre l’échelle/la taille minimale.

(En règle générale, n'utilisez pas "Espacement des lettres serré" à cette fin. L'espacement des lettres utilise la même taille de police et réduit l'espacement entre les lettres. Cela peut rendre l'étiquette plus serrée de 5% avant la troncature, mais elle n'est pas efficace si l'échelle de police est minimale/la taille est activée.)


Vous voudrez peut-être tester avec un appareil à écran large tel que le iPad Pro , ainsi que sur un écran plus petit comme le iPhone 4S . Une bonne pratique consiste à tester avec différentes tailles de police système, vous pouvez les définir dans Settings> General> Accessibility> Larger Text.

La réduction automatique ne modifie pas la taille de la police plus grande que celle définie sur l'étiquette. Cela signifie que si vous donnez à l'étiquette la même largeur que l'écran mais laissez la taille de la police à 14 , il essaiera d’augmenter la taille de la police jusqu’à atteindre cette taille.

Pour que cela fonctionne réellement, sélectionnez une grande taille de police .

Vous pouvez toujours combiner la fusion automatique avec des classes de taille pour modifier la taille de police maximale en fonction du périphérique/de l'orientation.


Si vous souhaitez utiliser la réduction automatique avec UIButtons, vous pouvez toujours définir ce comportement avec deux lignes de code.

myButton.titleLabel.minimumScaleFactor = 0.5;
myButton.titleLabel.adjustsFontSizeToFitWidth = YES;
59
Crazyrems

Bonjour, si vous ajoutez UILabel à partir du storyboard, vous pouvez définir une police différente pour toutes les présentations disponibles.

enter image description here

7
Mobile Apps Expert

Vous pouvez le faire en utilisant des classes de taille. Chaque dimension d'affichage utilisant une classe de taille, il en résulte quatre périphériques abstraits: largeur régulière-hauteur normale, largeur normale-hauteur compacte, largeur compacte-hauteur normale et compact largeur-hauteur compacte. Le tableau ci-dessous présente les appareils iOS et leurs classes de taille correspondantes.  enter image description here

Pour définir la taille de la police pour cette classe de taille particulière, sélectionnez d’abord le UILabel. Sous l'inspecteur Attributs, vous devriez voir un bouton plus (+) à côté du champ de police. Cliquez sur le bouton + et sélectionnez Largeur compacte> Hauteur normale (ou, selon vos besoins, sélectionnez largeur et hauteur). Vous verrez alors une nouvelle entrée pour l'option Police, qui est dédiée à cette classe de taille particulière. Conservez la taille intacte pour l'option de police d'origine, mais changez la taille du champ de police wC hR (OU selon votre sélection) en points requis (par exemple 14).

enter image description here

6
Madan gupta