我有一個集合視圖,並希望在多個設備上保持一致的行數和列數。在iPhone 6s Plus上,顯示6個項目,但在iPhone 5s上查看應用程序時,只顯示四個項目。具有固定行數和列數的集合視圖
見我的佈局在這裏:Layout on iPhone 6s Plus
我怎樣才能使集合視圖顯示在各種設備上相同的項目?
我有一個集合視圖,並希望在多個設備上保持一致的行數和列數。在iPhone 6s Plus上,顯示6個項目,但在iPhone 5s上查看應用程序時,只顯示四個項目。具有固定行數和列數的集合視圖
見我的佈局在這裏:Layout on iPhone 6s Plus
我怎樣才能使集合視圖顯示在各種設備上相同的項目?
您需要根據collectionView中的屏幕尺寸計算項目大小。最小間距應該固定。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if UIScreen.mainScreen().applicationFrame.width > 375 { //iPhone 6plus
//Calculate cell size
}
else if UIScreen.mainScreen().applicationFrame.width <= 375 && UIScreen.mainScreen().applicationFrame.width > 320 { //iPhone 6
//Calculate cell size
}
else {
//Calculate cell size
}
return CGSizeMake(width, height)
}
也順應UICollectionViewDelegateFlowLayout
像
class XYZ : UICollectionViewController, UICollectionViewDelegateFlowLayout
的SWIFT 3.0。
確保您使用的是autoLayout並實現了UICollectionView
sizeForItemAtIndexPath
。
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return CGSize(width: collectionView.bounds.size.width/3 - yourCellInterItemSpacing, height: collectionView.bounds.size.height/3 - yourCellInterItemSpacing)
}
這將使你的根據屏幕尺寸來創建(假設你正在使用的autoLayout),你應該需要的列/行數除以。將寬度除以所需的列數和高度(按行數)。
要提供屏幕截圖中的前導和尾隨空格,只需在故事板中向UICollectionView
添加適當的空格即可。即前後空格相當於yourCellInterItemSpacing
請確保您的課程符合UICollectionViewDelegateFlowLayout
協議!
讓你的類符合UICollectionViewDatasource
和UICollectionViewDelegate
,並添加這些功能,使10行5列:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 10
}
這就是我走到哪裏卡住瞭如何動態地計算細胞大小 – User