las*_*mer 20 scroll ios uicollectionview uicollectionviewlayout
我做了UICollectionView
一个垂直滚动.
单元格的宽度大于屏幕宽度,因此我创建了一个customFlowLayout
基于UICollectionViewFlow
布局的方法,返回正确的计算内容大小.
但是,这不起作用.当单元格的宽度小于屏幕宽度时,它可以工作.这是否意味着在垂直滚动中我们的宽度不能超过屏幕宽度?
水平滚动也是一样,但是高度CollectionView
限制在屏幕高度.
有没有办法使它工作?
joh*_*chd 14
正如其他人已经说过的那样,UICollectionView
只能使用流布局滚动一个方向.但是,无需创建自定义布局或使用第三方库,您就可以轻松完成此任务.
当您在故事板中展示视图时,可以将UICollectionView
嵌入式视图放入UIScrollView
.将滚动视图设置为水平UICollectionView
滚动,然后垂直滚动.然后设置UICollectionView.delaysContentTouches
为true,因此触摸将传递给,UIScrollView
并且不会认为您正在尝试滚动集合视图.
设置时UICollectionView
,将其大小和单元格的大小设置为您实际想要的大小(比实际屏幕更宽)并相应地进行布局.
现在在包含中UIViewController
将此代码放在视图生命周期中
- (void)viewDidLayoutSubviews {
self.myScrollView.contentSize = self.myCollectionView.frame.size;
}
Run Code Online (Sandbox Code Playgroud)
这就是你要完成你所描述的所有事情.现在,您的滚动视图应该允许您水平滚动以查看整个单元格,并且您的collectionView应该在您的单元格中垂直滚动.
快乐的编程.
小智 0
我不确定我是否理解你的问题。
但如果您制作了自定义布局,请确保您已实现:
- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath;
Run Code Online (Sandbox Code Playgroud)
并且布局属性框架和大小设置为“大单元格”索引路径的正确值。
还要确保您已实施:
- (CGSize) collectionViewContentSize;
Run Code Online (Sandbox Code Playgroud)
该方法返回集合View的contentSize。如果 contentSize.width > youAppFrame.width 你应该有水平滚动。高度和垂直滚动相同。
还要确保您的 collectionView 允许滚动并且您的布局已正确准备,使用:
- (void)prepareLayout
Run Code Online (Sandbox Code Playgroud)
顺便说一句,对于您的布局,您是否已超载UICollectionViewLayout
或UICollectionViewFlowLayout
?