2016-11-26 99 views
1

我最近在一個應用程序中實現了一個集合視圖,我遇到的唯一問題是集合視圖從兩列到兩列有較多填充的較小設備上的一列Swift 3 CollectionView縮放

繼承人顯示較小的那麼iPhone 6: enter image description here

和繼承人它的外觀顯示大於或等於iPhone 6: enter image description here

我曾嘗試幾種方法,其中如果顯示寬度小於某個數字就會變得很糟糕d放大細胞,但它沒能解決問題,因爲那些細胞確實已經放大了,但沒有居中並重疊在一起。

回答

2

您需要width.Try此代碼來計算的單元格。當我嘗試動態改變大小

class YourClass: UIViewController { 
     //MARK:-Outlets 
     @IBOutlet weak var yourCollectionView: UICollectionView! 

     //Mark:-Variables 
     var cellWidth:CGFloat = 0 
     var cellHeight:CGFloat = 0 
     var spacing:CGFloat = 12 
     var numberOfColumn:CGFloat = 2 


     //MARK:-LifeCycle 
     override func viewDidLayoutSubviews() { 
      super.viewDidLayoutSubviews() 

      yourCollectionView.contentInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing) 

      if let flowLayout = yourCollectionView.collectionViewLayout as? UICollectionViewFlowLayout{ 
       cellWidth = (yourCollectionView.frame.width - (numberOfColumn + 1)*spacing)/numberOfColumn 
       cellHeight = cellWidth //yourCellHeight = cellWidth if u want square cell 
       flowLayout.minimumLineSpacing = spacing 
       flowLayout.minimumInteritemSpacing = spacing 
      } 
     } 

    extension YourClass:UICollectionViewDelegateFlowLayout{ 
      func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
       return CGSize(width: cellWidth, height: cellHeight) 
      } 
    } 
+0

你能解釋一行中的集合視圖並更改單元格的高度嗎?請? –

2

您需要根據手機尺寸計算您的尺寸 - 如果兩個單元格的寬度大於屏幕尺寸(包括它們之間的所有偏移量),它們將按照第一張圖片進行佈局。

您有兩種選擇: 一種是根據設備尺寸處理尺寸和重新縮放細胞 兩個保持原樣 - 對iphone6/6s/7進行細微更改。

如果您選擇第一個選項,則需要爲這些尺寸設置約束 - 縱橫比或水平居中(可能會裁切圖像)。

對於動態變化的大小,來看看: https://developer.apple.com/reference/uikit/uicollectionviewdelegateflowlayout

更具體: https://developer.apple.com/reference/uikit/uicollectionviewdelegateflowlayout/1617708-collectionview

+0

沒有什麼變化:/ –

+0

您有加入細胞之間從兩側偏移和距離?你可以很容易地檢查,但設置寬度爲20或類似 – Miknash

+0

@NickCatib請給他提供一些代碼而不是鏈接。 –