如何找出当前iPhone屏幕的大小动态设置itemSize?

时间:2015-08-22 23:03:00

标签: ios collectionview

我需要将collectionView中的单元格设置为屏幕允许的宽度。 显然,itemSize属性应该达到这个目的。

在我的示例中,我将宽度设置为400,但如何设置为用户屏幕的宽度?

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
        layout.sectionInset = UIEdgeInsetsMake(10, 10, 9, 10);
        layout.itemSize = CGSizeMake(400, 150);
        self.collectionView = [[NewsSummaryCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
}

Rest of the code

更新

仍然不够宽,右手边的下一个细胞仍然可以看到。

enter image description here

2 个答案:

答案 0 :(得分:0)

集合布局具有对集合视图的引用,因此您应该使用它来设置项目的宽度(以及单元格的宽度)。将宽度设置为屏幕大小可能会大于集合,因此您不希望这样做。此外,您可以在边界更改时设置失效,以便布局知道是否需要更新项目。

答案 1 :(得分:0)

我找到了。希望它可以帮助别人。

UIView *rootView = [[[UIApplication sharedApplication] keyWindow]
                    rootViewController].view;
CGRect originalFrame = [[UIScreen mainScreen] bounds];
CGRect adjustedFrame = [rootView convertRect:originalFrame fromView:nil];
layout.itemSize = CGSizeMake(adjustedFrame.size.width, 150);