2017-11-03 2 views
1

実装する必要があるのは、たくさんのセル(製品)を持ち、水平方向と垂直方向にスクロールしなければならないUICollectionViewです。 ユーザーが水平方向にスクロールしたときに最初の列(カテゴリ)が移動しないで、他のセル(製品)と共に上下にスクロールしたときにスクロールしなければならないという制限があります。それは可能なのですか、別のUIコントロールを選択する必要がありますか?UICollectionViewビューを水平方向にスクロールさせて、最初の列が移動しないようにすることはできますか?

enter image description here

+2

UICollectionViewはこれをネイティブにサポートしていません。 たとえば、 'layoutAttributesForElementsInRect'、 'layoutAttributesForSupplementaryViewOfKind'などのUICollectionViewFlowLayoutのユーティリティなど、UICollectionViewFlowLayoutのカスタマイズをオーバーライドする必要があります。 – DanielH

+2

私は今あなたに適切な答えを与える時間がありませんが、これはUICollectionViewで可能です。 'UICollectionViewLayout'のサブクラスを作成し、行として「セクション」を、列として項目を使用することができます。 'prepareLayout'では、固定されたアイテムの四角形を計算して、それらを所定の位置に固定し、残りの部分を下にスクロールさせる必要があります。 – jlew

+2

例: https://www.brightec.co.uk/ideas/uicollectionview-using-horizo​​ntal-and-vertical-scrolling-sticky-rows-and-columns – jlew

答えて

0

私は完全にその取り消し可能と言うものではありませんが...私は少し物事を破壊するお勧めします。 2つのコレクション、カテゴリ、製品があり、それらの2つのUI要素が異なる動作をしているようです。 2つの別々のUICollectionViewまたはUIStackViewとUICollectionViewのどちらかを使用することを検討してください。

あなたが実装しようとしているUIについてもっと詳しく知りたいのであれば、私はあなたにもっと洞察を与えることができます。今のところは

乾杯

+0

追加スクリーンショット – Sergio

+0

が表示されます。うん。その場合は、@ jlewで解決策を説明し、UICollectionViewLayoutの独自のサブクラスを作成することができます。 –

0

はなぜ別のビューとしてそれをしないように2つのビューの仕事のように聞こえますか?

class CategoryCollectionView: UIView { 
    private let categoryView = UIView() 
    private let collectionView = UICollectionView() 
} 

次に、verticalViewはViewControllerの通常のサブビューになります。 それに続いて、私はViewController -> CollectionView -> Cells -> { CategoryCollectionView, CategoryCollectionView, TitleLabel }のUI階層の "Scheme"のようなものを作っています。簡単で高速です

+0

と上記のモックアップで説明されているように、「some text some text」の補足ビューを実装する方法は?あなたが見ることができるように、テキストはコントロール全体を横切って行きます – Sergio

+0

@Sergioこのビューからどのような動作が期待できますか?どのサイズにする必要がありますか? –

+0

ユーザーが水平方向にスクロールすると、「カテゴリ」列と「テキスト」ビューは静的に表示されます。しかし、上下にスクロールすると、すべてのビューがスクロール可能になります。 – Sergio

関連する問題