1

我对不同的iDevices屏幕大小使用自适应布局,我遇到了纵向显示两个单元格的问题。我设计了一个电池说130 X 210,它看起来完美的iPhone 5,但是,当在iPhone 6,我们有更多的30像素,为此,我计算出剩余空间,并设置空间同样,但是这看起来丑陋看到针对不同iDevices的自适应布局UICollectionViewCell大小

enter image description here

当我使用iPhone 6+时,它看起来更怪异,并且在iPad上会有更多的连续单元格,向我推荐一种处理这种情况的方法,或者我应该每次计算物品的尺寸和物品数量屏幕可以相应地包含这样的空间。这就是我现在的计算方法

int space = self.view.frame.size.width; 
space = space - 130 *2; 
space = space/3; 
UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init]; 
flow.minimumInteritemSpacing = space; 
flow.minimumLineSpacing = space; 
flow.scrollDirection = UICollectionViewScrollDirectionVertical; 
flow.sectionInset = UIEdgeInsetsMake(space, space, space, space); 
flow.itemSize = CGSizeMake(130, 210); 
[self.collectionViewGames setCollectionViewLayout:flow]; 
+0

我认为它能够更好地在所有的设备和细胞之间几乎是恒定的空间项目的大小可以根据在设备上进行更改。 – sateesh 2015-02-11 06:33:30

+0

@sateesh是它的一个选项来改变单元格的宽度,可以说固定空间为20像素,并设置宽度。但作为其适应性布局,在iPad上它会变得非常糟糕,可以对iPad进行特殊检查,但有一些正确的解决方案! – 2015-02-11 06:35:53

回答

3

我在实现类似于Photos应用的应用时遇到了同样的问题。我在这里所做的是我将间距的大小固定为一个常数值。并根据剩余的空间计算出物品的大小。

这里是我的情况下,代码

var flowLayout = // your flow layout 


     var itemWidth = self.view.frame.size.width/(5) // i am using 5 cells in a row 
    flowLayout.itemSize = CGSizeMake(itemWidth - 2, itemWidth - 2) 
    flowLayout.scrollDirection = UICollectionViewScrollDirection.Vertical 
    flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 0 , bottom: 0, right: 0) 
    flowLayout.minimumInteritemSpacing = 2 
    flowLayout.minimumLineSpacing = 2 
+0

这正是我的另一个解决方案,我会为iPad添加支票,如果我找不到其他可能的解决方案 – 2015-02-11 06:40:41

相关问题