调整UIScrollView的大小以适应其内容...无法正常工作

时间:2013-09-10 10:40:14

标签: ios objective-c uiview uiscrollview uitextview

我有一个使用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也包含其他元素,因此我无法以编程方式创建它。我希望有人能帮助我。

UPDATE 1 :我从界面构建器中将UIView和UIScrollView的高度设置为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的答案。谢谢!

2 个答案:

答案 0 :(得分:1)

scrollView.contentsize=textview.size

答案 1 :(得分:0)

变化 scrollview.contentSize 根据'viewDidScroll'委托

中的程序要求
  • (void)scrollViewDidScroll :( UIScrollView *)发件人 { } 如果您在滚动时获取textfield的新值