2017-06-19 5 views
0

J'essaye de réduire un UITextView avec une police personnalisée dans un storyboard avec des contraintes. Je peux facilement animer les limites et aussi la taille de la police. Cependant, comme il s'agit d'une police personnalisée, le changement de police devient assez saccadé pour les grandes tailles. Je pensais que cela pourrait être fait avec en changeant le transform du UITextView. Cependant, cela ne semble pas fonctionner. La vue de texte est auto-dimensionnée en hauteur, mais utilise un fixe avec une constante pour la largeur (qui s'anime avec la taille/transformation de la police). Cela permet de contrôler l'endroit où la ligne d'affichage du texte se casse.Réduire UITextView avec Transformer

J'ai essayé toutes les solutions suggérées ci-dessous sans succès. Soit la vue conserve les limites mais diminue la résolution. Ou les limites diminuent, mais plus vite que la taille de police apparue résultant en un écrêtage.

Scaling UITextView using contentScaleFactor property

J'ai aussi essayé de placer l'affichage du texte dans un placeholderview où j'ai animé aussi le multiplicateur de contrainte de hauteur/largeur pour vous assurer qu'il diminue en taille.

Répondre

0

Résolu en plaçant mon UITextView dans un espace réservé UIView et en définissant le centre d'alignement X/Y + des contraintes égales de largeur/hauteur.

J'ai également animé multiplier des contraintes de largeur/hauteur entre ces vues à l'inverse de l'échelle de transformation actuelle. Ceci pour compenser la mise à l'échelle de la transformée.

textViewWidthConstraint = textViewWidthConstraint.withMultiplier(1/scale) 
textViewHeightConstraint = textViewHeightConstraint.withMultiplier(1/scale) 
placeholderView.transform = CGAffineTransform(scaleX: scale, y: scale) 

où withMultiplier de fonction est un changement de nom de la solution présentée dans https://stackoverflow.com/a/33003217/511299 pour les multiplicateurs de contraintes de montage.