UICollectionView 无法显示所有内容
Posted
技术标签:
【中文标题】UICollectionView 无法显示所有内容【英文标题】:UICollectionView can't show all content 【发布时间】:2018-01-22 13:12:15 【问题描述】:我用这个(用代码而不是故事板)初始化collectionview:
-(id) init
self = [super init];
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.page = 0;
self.step = 20;
self.subCateItems = [[NSMutableArray alloc] init];
self.scaleFactor = [[UIScreen mainScreen] bounds].size.width / 375.f;
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
layout.sectionInset = UIEdgeInsetsMake(9.f*self.scaleFactor, 6.f*self.scaleFactor, 0, 6.f*self.scaleFactor);
_collectionView=[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout];
_collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^
self.page = 0;
[self updateData];
];
[_collectionView setDataSource:self];
[_collectionView setDelegate:self];
[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
[_collectionView setBackgroundColor:[UIColor whiteColor]];
[self.view addSubview:_collectionView];
return self;
但集合视图似乎无法显示所有集合单元:
如何解决这个问题?
正如 cmets 所建议的,我已经捕获了视图的视图层次结构
【问题讨论】:
似乎更多是约束或 CollectionView 偏移的问题。您能否通过 XCode developer.apple.com/library/content/documentation/… 中的 Hierarchy Debug 检查框架是否正确? 嗨,@Larme 我用代码而不是情节提要添加了这个集合视图,我该如何用代码解决这个问题? 检查你给collectionview的约束。 【参考方案1】:从您的滚动视图指示器来看,滚动视图的底部插图设置不正确,因为它与UITabBar
重叠。代码在 Swift 中,但你应该明白 ;-)
我通常这样做是为了让我的滚动视图显示在顶部:
_collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, -50, 0)
_collectionView.contentInset = UIEdgeInsetsMake(0, 0, -50, 0)
另外,请确保这样做:
self.automaticallyAdjustsScrollViewInsets = false
【讨论】:
嗨,由于我只使用 collectionView 作为@property 并实现了UICollectionView
的协议,所以找不到修改self.automaticallyAdjustsScrollViewInsets
的地方,但使插入工作
太棒了! automaticallyAdjustsScrollViewInsets
实际上是UIViewController
上的一个属性,它可能在很多方面都很方便,不仅仅是在这种情况下【参考方案2】:
第一个问题来了
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
一定是这样的
self.view = [[UIView alloc] initWithFrame:self.view.bounds];
那么,self
是谁?是UITabBarController
的标签吗?
如果是,一切都很好。如果不是,那么您将设置正确的 inset ofUICollectionView
【讨论】:
以上是关于UICollectionView 无法显示所有内容的主要内容,如果未能解决你的问题,请参考以下文章
如何将视频从 ALAsset 显示到 UICollectionview ios