如何找出当前 iPhone 屏幕的大小来动态设置 itemSize?
How to find out the size of current iPhone screen to set the itemSize dynamically?
我需要使 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];
}
更新:
仍然不够宽,右手边的下一个单元格仍然可以看到。
集合布局引用了集合视图,因此您应该使用它来设置项目(以及单元格)的宽度。将宽度设置为屏幕尺寸可能大于集合,因此您不想这样做。此外,您可以在边界更改时设置失效,以便布局知道是否需要更新项目。
我找到了。希望对其他人有帮助。
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);
我需要使 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];
}
更新:
仍然不够宽,右手边的下一个单元格仍然可以看到。
集合布局引用了集合视图,因此您应该使用它来设置项目(以及单元格)的宽度。将宽度设置为屏幕尺寸可能大于集合,因此您不想这样做。此外,您可以在边界更改时设置失效,以便布局知道是否需要更新项目。
我找到了。希望对其他人有帮助。
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);