1

私は以下のようなUIを作成しようとしています。私はUICollectionViewFlowLayoutを使用しています。この目的のためにコレクションビューの間隔が壊れます。

3 Column Layout

全幅との最初のセルを示すと3列としてセルを残りのために、私はsizeForItemAtIndexPath:minimumInteritemSpacingForSectionAtIndexメソッド実装しました:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 
{ 
    var cellSize = CGSizeZero 

    if indexPath.item == 0 
    { 
     let width = self.cvMedia.frame.width - 20 
     let height = (width * 9)/16 
     cellSize = CGSize(width: width, height: height) 
    } 
    else 
    { 
     let width = self.cvMedia.frame.width/3 - 20 
     let height = (width * 16)/9 
     cellSize = CGSize(width: width, height: height) 
    } 

    return cellSize 
} 



func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat 
{ 
    return 20.0 
} 

をしかし、私はiPhone 6SPlusやiPhone 6Plusで次の出力を取得しています:

Actual Outcome

Iは、20から19へのアイテムの間隔を変更することにより試み、それがシミュレータに取り組んだが、実際のデバイスでは同じ挙動を示します。スペップス値を変更すると、一部のデバイスバージョンで正しい出力が得られ、一部のバージョンでは動作しません。私はデバイスのバージョンチェックを追加することができ、その値に基づいて返すことができます。しかし、それは優雅な解決策ではなく、将来のバージョンで壊れるでしょう。誰も私がこの問題を解決するのを助けることができますか?前もって感謝します。

+0

あなたのストーリーボードからデフォルトのインセットを削除したことがありますか? – Happiehappie

+0

@Happiehappie:いいえ、私はストーリーボードで何も変更しませんでした。 –

答えて

0

は、このレイアウトを作るときあなたは、パラメータとしてコレクションビューの幅を使用する必要があり、このimageをチェックアウトし、細胞や線の両方のために0に

+0

それは動作しませんでしたが、それでも問題があります。 –

0

を分間隔の値を変更します。例えばについては

  1. あなたは、ビューに合わせて3つのセルを必要としています。
  2. セルの間隔は20ptでなければなりません。

対処:

はviewWillAppear実行時にいずれかのセルの大きさを計算し()またはcellForRowAtIndexPath()

シナリオ:デバイスの

幅が320ptです。 Collectionviewの幅は300pt(間隔10pt L & R)です。間隔:セル間で20pt。セルが必要3! セルサイズ:?

Now ...いずれかの方法で計算を開始します。

セル間隔=(3-1)* 20 = 2 * 20 = 40pt

残りのコレクションビュー幅= 300pt - 40pt = 260pt

セルサイズ= 260pt/3 = 86.667 PT。 (86pt apprx)。コードで

cellWidth = (collectionView?.bounds.width - minimumSpacing * (numberOfCellsInARow - 1))/numberOfCellsInARow 

また、これが唯一のcellWidthを与えます。 cellHeightも必要です。 セルの縦横比が既にある場合があります。これを使用して、cellHeightも計算します。

種類よろしく、
スマンAdhikari

関連する問題