У меня есть приложение, которое использует 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. Благодаря!
Фактически, содержимое изменяется только тогда, когда представление загружается в' viewDidLoad', а затем я настраиваю размер UITextView в соответствии с его содержимым, создавая его программным путем , –