在Today-Extension中获取Notification-Center的宽度

时间:2014-09-28 14:23:21

标签: ios objective-c cocoa-touch uikit today-extension

我目前正在尝试将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上的宽度?

2 个答案:

答案 0 :(得分:1)

只是猜测一下,但根据我对UICollectionView的经验,我说你需要在viewDidLayoutSubviews中计算你的小区大小。

当你的委托方法被调用时(可能在viewDidLoad:之后不久),视图可能还没有正确调整大小,因此返回错误的帧大小(所有的viewcontrollers都使用全屏大小进行初始化,然后调整大小以适应)。

viewDidLayoutSubviews中执行此操作应该保证您的collectionViews Frame已经正确。您需要重新加载collectionView。

答案 1 :(得分:0)

您确定收集视图也已正确调整大小吗?您没有使用self.view.bounds.size.width,而是采集集合视图。

你是否有你的collectionview创建代码(我假设的loadview方法)和你的viewWillTransitionToSize / viewWillLayoutSubviews / viewDidLayoutSubviews实现?