我正在以编程方式使用 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
是从 a 子类化的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 根据他们的内容自动调整他们的滚动。