我有一个应用程序使用 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 的回答。谢谢!