调整 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'slayout或者我应该设置哪个方法 其实你不能用那个方法设置UICollectionView的布局。它只是UICollectionViewDelegateFlowLayout 的一种方法,用于决定某个部分的minimumLineSpacing。您可以使用所需的UICollectionViewDelegateFlowLayout 方法来确定每个sectionindexPath 的间距和大小。如果您不需要特定元素的措施,您可以使用我的示例。 文档还指出:该协议中的所有方法都是可选的。如果您不实现特定方法,则流布局委托将使用其自身属性中的值来获取适当的间距信息。流布局对象期望集合视图的委托对象采用此协议。因此,在分配给集合视图的委托属性的对象上实现此协议。 你写的代码是4英寸屏幕的,我必须把其他代码放到3.5英寸屏幕上? 不,它只用于决定ItemSize变量。您也可以根据屏幕大小决定其他,例如minimumInteritemSpacing。我没有更改其他人,因为您在问题中说过:我希望边缘之间和单元格之间的间隙保持不变

以上是关于调整 4/3.5 英寸屏幕的 UICollectionViewCells 大小的主要内容,如果未能解决你的问题,请参考以下文章

ViewControllers 不为 3.5 英寸屏幕调整大小

UIScrollView 内的 UIView 未在 3,5 英寸屏幕 iOS 上调整大小

将 ScrollView 高度调整为屏幕高度?

自动调整大小不适用于 xib 文件中的视图内容

CSS使图像调整大小并适合任何屏幕

Xcode 5:不同屏幕大小的 iPhone 自动布局视图调整大小问题