Configuration actuelle:

J'ai un multiliné UIButton qui est ajouté à sa supervision (un UIView ordinaire). La largeur du bouton correspond à 90% de sa vue supervisée. Ainsi, lorsque la taille de sa vue supervisée change, la largeur de l'étiquette change en conséquence en raison des contraintes Autolayout.

Ensuite, à l'intérieur de la méthode viewDidLoad, j'ai fait ceci:

  //Line break mode and Font size ( are set in Interface Builder
  myButton.titleLabel?.adjustsFontSizeToFitWidth = true
  myButton.titleLabel?.minimumScaleFactor = 15.0
  myButton.titleLabel?.numberOfLines = 2

Alors maintenant, quand j'ai un long texte, sur les appareils iPhone, j'obtiens quelque chose comme ceci: iPhone look

C'est exactement ce que je veux. Mais bien sûr, cela semble différent sur les appareils iPad. Par exemple, ceci est sur iPad Pro 9.7 ":

iPad Pro look

Et comme on peut le voir, tout semble petit et mauvais.

Ce que j'ai essayé:

J'ai essayé de définir la taille de police maximale (qui sera utilisée sur les appareils iPad), en combinaison avec minimumScaleFactore = 15. J'ai donc défini la taille de la police sur 25 et maintenant tout semble plus acceptable sur iPad et iPhone, mais sur les appareils iPhone, le texte est un peu plus grand que ce dont j'ai besoin en raison du fonctionnement de minimumScaleFactor.

Quel serait un moyen de résoudre ce problème?

Je préfère obtenir quelque chose comme ça (pour obtenir un look similaire sur tous les appareils iPad et iPhone):

desired iPad look

2
Whirlwind 16 janv. 2017 à 15:57

2 réponses

Meilleure réponse

Vous pouvez utiliser des classes de taille pour spécifier la police de votre bouton / étiquette dans IB. Appuyez simplement sur le petit signe + à gauche de la propriété font:

Just press the little + sign to the left of the font property

3
Mihai Fratu 19 janv. 2017 à 07:59

Malheureusement, vous ne pouvez pas modifier la police du bouton dans le générateur d'interface en fonction de la classe de taille; toutefois, vous pouvez supprimer des contrôles entiers en fonction de la classe de taille. Choisissez l'inspecteur d'attributs (Option + commande + 4) avec votre bouton sélectionné. Faites défiler vers le bas et vous verrez une case à cocher pour l'installation avec un petit bouton plus sur la gauche. Si vous cliquez sur le plus, vous pouvez maintenant ajouter des variantes de classes de taille pour désinstaller ce contrôle. Désinstallez-le spécifiquement pour Regular Width Regular Height (qui est un iPad en écran non partagé). Maintenant, créez un deuxième bouton avec les attributs de votre iPad et installez-le UNIQUEMENT pour une hauteur normale à largeur régulière. Vous avez maintenant deux boutons différents: 1) pour iPad sans écran partagé et un pour tout le reste, aucun code nécessaire. Vous pouvez les configurer pour appeler la même IBAction. Consultez ce lien pour en savoir plus.

1
Josh Homann 19 janv. 2017 à 04:17