【发布时间】:2013-09-10 10:40:13
【问题描述】:
我有一个应用,它使用 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(修复):
我可以通过在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 的回答。谢谢!
【问题讨论】:
标签: ios objective-c uiview uiscrollview uitextview