我目前正在尝试将CollectionView放在Today Extension中。 但有些事情困扰着我。
我想实现每个单元格都适合我的集合视图的一行。 因此,根据项目数计算单元格宽度。
在iPhone上一切正常,但在iPad上它看起来并不合适。 细胞宽度很大。 所以我调试了我的代码,似乎是self.view.frame.width或self.view.bounds.width 返回屏幕的整个宽度,而不是通知中心宽度。 难怪为什么我的细胞要大。 我正在计算我的项目大小:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGFloat count = (CGFloat)[self.collectionView numberOfItemsInSection:0];
return CGSizeMake(self.collectionView.frame.size.width/count, 80.0);;
}
所以现在我的问题是,我怎样才能得到真正的"我的通知中心在iPad上的宽度?
答案 0 :(得分:1)
只是猜测一下,但根据我对UICollectionView的经验,我说你需要在viewDidLayoutSubviews
中计算你的小区大小。
当你的委托方法被调用时(可能在viewDidLoad:
之后不久),视图可能还没有正确调整大小,因此返回错误的帧大小(所有的viewcontrollers都使用全屏大小进行初始化,然后调整大小以适应)。
在viewDidLayoutSubviews
中执行此操作应该保证您的collectionViews Frame已经正确。您需要重新加载collectionView。
答案 1 :(得分:0)
您确定收集视图也已正确调整大小吗?您没有使用self.view.bounds.size.width,而是采集集合视图。
你是否有你的collectionview创建代码(我假设的loadview方法)和你的viewWillTransitionToSize / viewWillLayoutSubviews / viewDidLayoutSubviews实现?