【发布时间】:2012-09-22 15:37:16
【问题描述】:
我正在以编程方式使用 UICollectionView。
我将它的框架设置如下:
UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 3000) collectionViewLayout:flowLayout];
我的UICollectionViewFlowLayout 有一个部分插入设置为:
flowLayout.sectionInset = UIEdgeInsetsMake(20.0, 20.0, 100.0, 20.0);
我也只有 1 个部分。
我已将高度设置为 3,000,以查看集合视图是否会滚动,但不会滚动。我将其设置为,因为当我插入新项目时集合视图似乎没有向上或向下滚动。
UICollectionView 是UIScrollView 的子类,这意味着我可以继续重置滚动视图内容大小。这会正常工作吗?
唯一的问题是,如果我知道所有项目的大小(包括每行有多少项目),这将起作用。
如果每个项目都有不同的大小,我如何找出每一行的大小?我需要它来添加所有行大小并增加 self.collectionView 的内容大小高度。
编辑
即使我上面的建议,重置内容大小,也不能正常工作!我在更新收藏视图时尝试了以下操作:
int numberOfRows = self.dataArray.count / 3;
self.collectionView.contentSize = CGSizeMake(self.view.frame.size.width, (numberOfRows * 200) + 300);
虽然这很丑陋。这是因为它假设我所有的图像的大小都是 200x200px,每行适合 3 个图像(因此除以 3)。
此外,即使我有 +300,最后一行我也只能看到大约 3/4,而不是全部。我必须滚动更多,我才能看到它,但它又回到了 3/4。它有点像滚动刷新,只有当你拖动它时视图才会移动,当你离开它时,它会撞回原来的位置。为什么会这样?难道只是苹果把UICollectionView设计的这么差吗?这有点荒谬...... UITableViews 根据其内容自动调整滚动。
【问题讨论】:
标签: objective-c ios ipad uicollectionview