调整 4/3.5 英寸屏幕的 UICollectionViewCells 大小
Posted
技术标签:
【中文标题】调整 4/3.5 英寸屏幕的 UICollectionViewCells 大小【英文标题】:Adjust UICollectionViewCells Size for 4/3.5 inches screens 【发布时间】:2014-03-27 22:13:35 【问题描述】:我正在尝试 UICollectionView 功能(这是一个非常好的功能......)。一件事尚不清楚 - 如何支持与 UICollectionViewCells 大小相关的 4 英寸和 3.5 英寸屏幕。我希望边缘之间和单元格之间的间隙保持不变,并根据设备改变单元格大小。
我应该如何处理这个问题?
【问题讨论】:
【参考方案1】:你应该首先继承UICollectionViewFlowLayout
。头文件中的一些实现可以是这样的:
@interface CustomCollectionViewLayout : UICollectionViewFlowLayout
@end
以及实现文件:
@implementation CustomCollectionViewLayout
-(id) init
if(self = [super init])
BOOL is4Inch = ([[UIScreen mainScreen] bounds].size.height == 568.0);
CGSize ItemSize = is4Inch ? CGSizeMake(150, 120) : CGSizeMake(90, 72);
[self setItemSize:ItemSize];
[self setMinimumInteritemSpacing:10.0];
[self setMinimumLineSpacing:10.0];
[self setScrollDirection:UICollectionViewScrollDirectionVertical];
[self setHeaderReferenceSize:CGSizeMake(0, 5)];
[self setFooterReferenceSize:CGSizeMake(0, 20)];
[self setSectionInset:UIEdgeInsetsMake(0, 10, 0, 10)];
return self;
@end
然后你应该设置你的UICollectionView
的布局,比如:
CustomCollectionViewLayout * customLayout = [[CustomCollectionViewLayout alloc] init];
self.collectionView = [[UICollectionView alloc] initWithFrame:someFrame collectionViewLayout:customLayout];
或喜欢:
[self.collectionView setCollectionViewLayout:customLayout animated:YES];
【讨论】:
我可以在这个方法(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
上设置UICollectionView's
layout或者我应该设置哪个方法
其实你不能用那个方法设置UICollectionView
的布局。它只是UICollectionViewDelegateFlowLayout
的一种方法,用于决定某个部分的minimumLineSpacing
。您可以使用所需的UICollectionViewDelegateFlowLayout
方法来确定每个section
或indexPath
的间距和大小。如果您不需要特定元素的措施,您可以使用我的示例。
文档还指出:该协议中的所有方法都是可选的。如果您不实现特定方法,则流布局委托将使用其自身属性中的值来获取适当的间距信息。流布局对象期望集合视图的委托对象采用此协议。因此,在分配给集合视图的委托属性的对象上实现此协议。
你写的代码是4英寸屏幕的,我必须把其他代码放到3.5英寸屏幕上?
不,它只用于决定ItemSize
变量。您也可以根据屏幕大小决定其他,例如minimumInteritemSpacing
。我没有更改其他人,因为您在问题中说过:我希望边缘之间和单元格之间的间隙保持不变。以上是关于调整 4/3.5 英寸屏幕的 UICollectionViewCells 大小的主要内容,如果未能解决你的问题,请参考以下文章
ViewControllers 不为 3.5 英寸屏幕调整大小