web-dev-qa-db-ja.com

UICollectionView:水平および垂直スクロールをサポートするUICollectionViewLayoutを定義する方法は?

現時点では、UICollectionViewrowsを使用した単純なExcel-like-spreadsheetを表示するcolumnsを作成しようとしています。これは、UICollectionViewsを使用した簡単な作業になるはずです。そして、私は本当にgrid frameworkではなくUICollectionViewで実装をしたいと思います。

でも今はちょっとぶら下がっています。私が理解したのは、残念ながらUICollectionViewDelegateFlowLayoutどちらかscrollingまたはhorizontally方向でのみサポートされるため、verticallyを使用できないことです。しかし、私は双方向でscrollingが必要です。

したがってUICollectionViewLayoutを使用する必要がありますが、これについては、良い例、使用方法が見つかりませんでした。 UICollectionViewLayoutrowsをサポートするためにcolumnsをサブクラス化する方法の例はありますか?

前もって感謝します。

18
AxM

UICollectionViewFlowLayoutは絶対にできません-「グリッドレイアウトは水平または垂直に1つの軸に沿ってのみスクロールします。」

UICollectionViewLayoutのサブクラスです。 UICollectionViewLayoutの独自のサブクラスを作成して、両方向にスクロールできるようです。

ページとはどういう意味ですか、scrollviewのようにページングしたいですか?縦スクロールのUICollectionView内、横スクロールのUIScrollView内でUICollectionViewFlowLayoutを使用することについて疑問に思っています。

7
user1805608

カスタムレイアウトを使用して単純な水平および垂直スクロールグリッドを実装する例をここに追加しました https://github.com/neildavis/MyCollectionView

IOS 5のサポートが必要だったので、私の例ではPSTCollectionViewを使用していますが、これは組み込みのUICollectionViewと互換性のあるAPIです。 (実際には、提供されている互換性クラス(PSUICollectionViewなど)を使用して、iOS 6でUICollectionViewを使用し、iOS 5でPSTCollectionViewなどを使用するようにします。これらの「PS」プレフィックスを削除して、iOS 6のみのUIKit実装に戻します。 。

5
cidered

つのサンプルプロジェクトを分析する必要がない回答

UICollectionViewLayoutサブクラスで:

  1. -(CGSize)[collectionViewContentSize]を実装し、UICollectionViewのサイズよりも高さと幅が大きいサイズを返します。 (アクセス先:self.collectionView.frame.size
  2. フレームサイズではなく、コンテンツサイズ内のUICollectionViewCellsのレイアウトを計算します。

注:UICollectionViewでスクロールが有効になっていることを確認してください。 (デフォルトでオンになっています。)

3
MechEthan

私は同様のものが必要でした。カスタムCollectionViewLayoutを作成しました。

https://github.com/akashraje/BidirectionalCollectionViewLayout

2
akashsr