我有一个带缩略图的垂直滚动视图,可作为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));
}
当我运行我的应用程序时,有一个菜单有57个项目,因此viewCount日志显示为57,高度显示为10830.在另一个菜单上,我有13个项目,因此,高度为2470。 / p>
这里的一切似乎都很好,但是当我滚动到视图的末尾时,带有57个图标的菜单会留下太多的空白区域,而带有13个项目的菜单会在最后一个项目上完美地结束并且有一点边距(每个缩略图是183px)。我试图找出原因是什么,但似乎我拥有的菜单项越多,滚动视图在最后一项上的间距就越大。
我尝试调用scrollView sizeToFit,甚至尝试创建一个可见区域的CGRect到我的框架的apple,但没有一个工作。有什么想法吗?
谢谢。答案 0 :(得分:8)
来自https://stackoverflow.com/a/14852596/1363779
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);
这是一种很好的简单方法。
答案 1 :(得分:1)
Swift 2.0版
var sizeOfContent: CGFloat = 0
let lLast: UIView = scrollView.subviews.last!
let wd: CGFloat = lLast.frame.origin.y
let ht: CGFloat = lLast.frame.size.height
sizeOfContent = wd + ht
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, sizeOfContent)