UIScrollview动态内容大小非常基于项目数量

kev*_*inl 2 scrollview uiscrollview ios ios6

我有一个带缩略图的垂直滚动视图,作为ipad应用程序上特定项目的"侧面板".

这是我设置内容大小的代码:

- (void)setScrollViewContentSize:(UIScrollView*)scrollView{
    NSInteger viewCount = [scrollView.subviews count];

    NSLog(@"viewCount: %d", viewCount);
    NSLog(@"height: %f", (viewCount * 190.0f));
    scrollView.contentSize = CGSizeMake( scrollView.superview.frame.size.width, (viewCount * 190.0f));
    }
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序时,有一个菜单有57个项目,因此viewCount日志显示为57,高度显示为10830.在另一个菜单上,我有13个项目,因此,高度为2470.

这里的一切看起来都很好,但是当我滚动到视图的末尾时,带有57个图标的菜单会留下太多的空白区域,而带有13个项目的菜单会在最后一个项目上完美地结束并略有余量(每个缩略图为183px) ).我试图找出原因是什么,但似乎我拥有的菜单项越多,滚动视图在最后一项上的间距就越大.

我尝试调用scrollView sizeToFit,甚至尝试创建一个可见区域的CGRect到我的框架的苹果,但没有一个工作.有任何想法吗?

谢谢.

kev*_*inl 8

来自/sf/answers/1039681751/

float sizeOfContent = 0;
UIView *lLast = [scrollView.subviews lastObject];
NSInteger wd = lLast.frame.origin.y;
NSInteger ht = lLast.frame.size.height;

sizeOfContent = wd+ht;

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, sizeOfContent);
Run Code Online (Sandbox Code Playgroud)

这是一个很好的简单方法.