0

我有一个应用程序使用 UIScrollView 来显示由 Interface Builder 创建的内容。我以编程方式向它添加了 UITextView,因为它的内容是可变的并且我希望它调整大小。这个完成了!调整 UIScrollView 的大小以适应新的 UITextView 大小时出现问题。我只是无法完成它。我尝试了各种方法,包括:

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

我认为问题在于它是由 Interface Builder 构建的,但 UIScrollView 也包含其他元素,因此我无法以编程方式创建它。我希望有人能在这方面帮助我。

更新 1:我将 UIView 和 UIScrollView 的高度都从 Interface Builder 设置为 1024。

更新 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 的回答。谢谢!

4

2 回答 2

1

scrollView.contentsize=textview.size

于 2013-09-10T10:44:10.150 回答
0

根据您在“viewDidScroll”委托中的程序要求更改 scrollview.contentSize

  • (void)scrollViewDidScroll:(UIScrollView *)sender { } 如果您在滚动时获取文本字段的新值
于 2013-09-10T11:47:50.303 回答