如何设置UIScrollView的ContentSize是一个子视图?

时间:2012-11-08 21:04:45

标签: objective-c xcode uiscrollview

我有一个使用Storyboard的iPad应用程序。我有一个带有UIView的场景,它在上半部分有一个额外的UIView(我画了),下半部分有一个UIScrollView(我需要将它们分开保存)。我很难弄清楚如何使用我从另一个SO问题复制的代码来解决UIView:

CGFloat scrollViewHeight = 0.0f;
for (UIView* view in scrollView.subviews)
{
   scrollViewHeight += view.frame.size.height;
}

[scrollView setContentSize:(CGSizeMake(320, scrollViewHeight))];

我阅读上面代码的方式,我应该使用UIView,但这没有意义,因为UIView涵盖了整个“场景/窗口”。使用UIScrollView计算ContentSize对我来说更有意义。

那么,我应该使用什么?

1 个答案:

答案 0 :(得分:2)

不完全清楚你在问什么。通过标记,属性或其他方法引用滚动视图后,应将其内容大小设置为所有内容组合的宽度和高度(计算重叠等)。防爆。如果您在滚动视图中有一个600 x 900点的单个图像视图,则将其大小设置为600 x 900 CGSize。

使用for...in循环(又名快速枚举)遍历滚动视图的所有子视图,将它们的高度加在一起,然后将其用作内容的高度。我不认为这是一个很好的方法,因为这假设所有的子视图完全叠加在一起。它基本上是,“对于我的滚动视图的每个子视图,将它们的高度添加到此总数中,然后将其用作内容大小的高度。”

管理滚动视图的最简单方法是将所有内容打到一个UIView中,将其放在滚动视图中,然后将滚动视图的内容大小设置为UIView的框架。如果您需要对滚动视图中包含的UIView的引用,您可以将其设置为属性或为其指定标记并使用viewWithTag