2011-07-17 186 views
2

当内容大小动态变化时,我将如何设置scrollview的内容大小。我已将所有内容添加到名为“contentView”的UIView,然后尝试调用setcontentsize(如下所示),但这不会导致滚动。动态内容的滚动视图setcontentsize

sudo'ish代码:

[scrollView setContentSize: contentView.frame.size]; 

也许 “内容查看” 不是伸展它的大小以适合其子?

任何帮助,将不胜感激。

回答

4

UIViewUIScrollView将不会基于内容自动拉伸。您必须手动计算框架并将其相应地放置在滚动视图中,然后将滚动视图的contentSize设置为可容纳所有子视图的最大可能大小。

1

当你添加东西到你的contentView调用[contentView sizeToFit],然后内容视图将拉伸以适应其子视图,然后,你发布的代码将工作。

1

这取决于您要动态添加的内容类型。假设您有大量的文本数据要显示,然后使用UITextView,并且由于它是UIScrollView的子类,所以在分配文本内容时,可以获取TextView的setContentSize。基于此,您可以设置UIScrollView的总大小。

float yPoint = 0.0f; 
UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, yPoint, 320.0f, 400.0f)]; 

UITextView *calculatorTextView = [[UITextView alloc] init]; 
    calculatorTextView.text = @"My looong content text ..... this has a dynamic content"; 
[calculatorTextView sizeToFit]; 

yPoint = yPoint + calculatorTextView.contentSize.height; // Bingo, we have the new yPoiny now to start the next component. 

//现在你知道你的文字和地点将结束的高度。所以你可以创建一个标签或其他TextView并在那里显示你的文本。您可以将这些组件作为子视图添加到滚动视图中。

UITextView *myDisplayContent = [[UITextView alloc] initWithFrame:CGRectMake(0.0f, yPoint, 300.f, calculatorTextView.contentSize.height)]; 

myDisplayContent.text = @"My lengthy text ...."; 
[myScrollView addSubview:myDisplayContent]; 

//最后,设定“myScrollView”的内容的大小的显示区域的总长度。

[myScrollView setContentSize:yPoint + heightOfLastComponent]; 

这适用于我。