Redimensionner UItextview en fonction de son contenu dans iOS7
Je suis en train de redimensionner l'affichage de texte en fonction du contenu & son frère et parent conteneur.
Code ci-dessous fonctionne très bien dans iOS 6
if (/* less than ios 7 */) {
CGRect frame = _textView.frame;
CGSize conSize = _textView.contentSize;
CGFloat difference = conSize.height - frame.size.height;
frame.size.height += difference;
_textView.frame = frame;
UIScrollView *parentView = (UIScrollView *)_textView.superview;
//adjust views residing below this text view.
//sibling view
UIView *belowView = //access it somehow
CGRect frame1 = belowView.frame;
frame1.origin.y += difference;
belowView.frame = frame1;
//adjust parent scroll view, increase height.
CGSize frame3 = parentView.contentSize;
frame3.height += difference;
parentView.contentSize = frame3;
} else {
//tried
[_textView sizeToFit];
[_textView layoutIfNeeded];
[parentView sizeToFit];
[parentView layoutIfNeeded];
}
Essayé de suivre iOS 7 solution de:
Comment puis-je taille un UITextView de son contenu sur iOS 7?
mais ne fonctionne pas.
Les pointeurs?
Code de travail de la solution de @NSBouzouki
if (/* ios 7 */) {
[_textView.layoutManager ensureLayoutForTextContainer:_textView.textContainer];
[_textView layoutIfNeeded];
}
CGRect frame = _textView.frame;
CGSize conSize = _textView.contentSize;
CGFloat difference = conSize.height - frame.size.height;
frame.size.height += difference;
_textView.frame = frame;
UIScrollView *parentView = (UIScrollView *)_textView.superview;
//adjust views residing below this text view.
//sibling view
UIView *belowView = //access it somehow
CGRect frame1 = belowView.frame;
frame1.origin.y += difference;
belowView.frame = frame1;
//adjust parent scroll view, increase height.
CGSize frame3 = parentView.contentSize;
frame3.height += difference;
parentView.contentSize = frame3;
source d'informationauteur Piyuesh
Vous devez vous connecter pour publier un commentaire.
Il semble
UITextView's
contentSize
propriété n'est pas défini correctement dans iOS 7 jusqu'àviewDidAppear:
. C'est probablement parce queNSLayoutManager
énonce le texte paresseusement et l'ensemble du texte doit être aménagé pourcontentSize
être correct. LeensureLayoutForTextContainer:
méthode des forces de mise en page du texte fourni par le conteneur après quiusedRectForTextContainer:
peut être utilisé pour obtenir les limites. Afin d'obtenir la largeur totale et la hauteur correctement,textContainerInset
propriété doit être pris en compte. La méthode suivante a fonctionné pour moi.En outre, il semble
UITextView's
setContentSize:
méthode est appelée à partir delayoutSubviews
. Ainsi, l'appel delayoutIfNeeded
sur untextView
(qui elle-même appellelayoutSubviews
) après appelensureLayoutForTextContainer:
sur sonlayoutManager
doit en faire latextView's
contentSize
correcte.GrowingTextViewHandler est une sous-classe NSObject qui redimensionne la vue du texte que l'utilisateur tape un texte.
Voici comment vous pouvez l'utiliser.