2013-09-10 4 views
0

У меня есть приложение, которое использует UIScrollView для отображения контента, созданного Interface Builder. Я добавляю UITextView к нему программно, потому что его содержимое изменчиво, и я хочу, чтобы оно изменялось. Готово! Проблема возникает при изменении размера UIScrollView в соответствии с новым размером UITextView. Я просто не могу это сделать .. Я пробовал различные методы, в том числе:Изменение размера UIScrollView в соответствии с его содержанием ... не работает

CGRect contentRect = CGRectZero; for (UIView *view in self.scrollView.subviews) contentRect = CGRectUnion(contentRect, view.frame); self.scrollView.contentSize = contentRect.size;

Я думаю, что проблема в том, что она построена на Interface Builder, но UIScrollView содержит другие элементы, а так я не могу создайте его программно. Я надеялся, что кто-то поможет мне в этом.

UPDATE 1: У меня есть как UIView, так и UIScrollView высотой, установленной на 1024 из Interface Builder.

ОБНОВЛЕНИЕ 2 (FIX): я смог исправить эту проблему путем выдачи таймера в конце метода viewDidLoad следующим образом:

[NSTimer scheduledTimerWithTimeInterval:0.00001 target:self selector:@selector(resizeScrollView) userInfo:nil repeats:NO]

, а затем изменить его размер в resizeScrollView метод здесь:

-(void)resizeScrollView { CGFloat scrollViewHeight = 0.0f; for (UIView* view in scrollView.subviews) { scrollViewHeight += view.frame.size.height; } [scrollView setContentSize:(CGSizeMake(320, scrollViewHeight-50))]; }

Спасибо за помощь!

ПРИМЕЧАНИЕ: Это решение было вдохновлено ответом Maniac One. Благодаря!

ответ

0

изменение scrollview.contentSize согласно вашему требованию программы в делегатом 'viewDidScroll'

  • (аннулируются) scrollViewDidScroll: (UIScrollView *) отправитель { } если вы получаете новые значения для текстового поля при прокрутке
+0

Фактически, содержимое изменяется только тогда, когда представление загружается в' viewDidLoad', а затем я настраиваю размер UITextView в соответствии с его содержимым, создавая его программным путем , –

1

scrollView.contentsize=textview.size

+1

правильный ответ .. –

+0

Это не работает. Он все еще ничего не делает, потому что есть другие элементы, кроме UITextView. –

+0

В этом случае вы можете использовать 'scrollview.contentSize = CGSizeMake (добавление ширины всех представлений в scrollView, добавление высот всех представлений в scrollView)' – Yogi

Смежные вопросы