Я пытаюсь изменить размер текстового представления в соответствии с содержимым &, также это родственный и родительский контейнер.Изменить размер UItextview в соответствии с его содержимым в iOS7
Ниже код работает отлично в 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];
}
Попробовал следовать IOS 7 решения от: How do I size a UITextView to its content on iOS 7?
, но не работает.
Любые указатели?
Рабочий код решения от @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;
Следуйте ссылке ниже для точного ответа: http://trio-hasim.blogspot.in/2014/01/get-uitextview-content-size-in-ios7.html –
@NSBouzouki работает нормально в iOS7, но давая сбой в iOS6 –
Также обратите внимание, что изменение размера должно выполняться как минимум после того, как макет вычисляется в viewDidLayoutSubview, чтобы убедиться, что была выполнена какая-то математика на компоновке layoutContainer. Если вы обновляете контент из Интернета, используйте layoutIfNeeded, который запускает макет, а затем обновляет размер в viewDidLayoutSubview. –