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

相關問題