問題タブ [uicollectionviewlayout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 奇妙な UICollectionViewFlowLayout オーバーライド動作
をオーバーライドしようとしていますがUICollectionViewFlowLayout
、奇妙なことに気付きました。ここに小さなコード スニペットが表示されます。
にアイテムが追加されるとUICollectionView
、reloadData
が呼び出されます。ReloadData
は常にレイアウトを再初期化するため、何度も呼び出され、まったくprepareLayout
呼び出さprepareForCollectionViewUpdates
れません。
それを処理する方法はありますか?
ios - 両方向の UICollectionView スクロール
UICollectionView
縦スクロールで作ってみました。
セルの幅が画面の幅を超えているため、正しい計算されたコンテンツ サイズを返すレイアウトにcustomFlowLayout
基づいて作成しました。UICollectionViewFlow
ただし、これは機能しません。セルの幅が画面の幅よりも小さい場合に機能します。縦スクロールでは画面幅以上の幅は持てないということですか?
水平スクロールも同じですが、の高さはCollectionView
画面の高さに制限されます。
それを機能させる方法はありますか?
ios6 - UICollectionViewLayout の例
UICollectionViewLayout を使用して、Pinterest の列レイアウトに似たインターフェイスを作成する方法について、誰かが正しい方向に向けることができますか?
ネットで調べてみたのですが、まだあまり例がないようです。
uiviewcontroller - 自動回転で UICollectionView セルが密集する
水平にスクロールするデフォルトの Flow レイアウトを持つ UICollectionView があります。デバイスを回転させると、セルが重なり合っています。
最初の起動方向に回転して戻すと、レイアウトは自動的に修正されます。
didRotate~ メソッドで invalidateLayout と reloadData を呼び出してみましたが、どちらも影響はありませんでした。
何か案は?
乾杯!
ios - UICollectionViewの各セクションの独立したスクロール?
各セクションを個別にスクロールできるUICollectionView
レイアウトを構築するために使用することは可能ですか?たとえば、20行の画像を想像してみてください。各行を水平方向に個別にスクロールして、画面外にさらに多くの画像を表示できます(プロセスで他の行をスクロールする必要はありません)。ビュー全体を垂直方向にスクロールして、より多くの行を表示できます。
このようなものは、UIScrollView内のUICollectionViewのいくつかのインスタンスで実装できると思います。ただし、セクションの挿入/移動にUICollectionViewを活用すると便利です。
UICollectionViewはUIScrollViewのサブクラスであるため、これは実用的ではないと思います。しかし、おそらくこれはカスタムUICollectionViewLayoutで実行できますか?
ios - 結果のような列分割UITableViewに一致するようにUICollectionViewLayoutを設定します
私はiOS6のUICollectionViewを初めて使用し、これまでのところUITableViewとほとんど同じように見えますが、表示しているセルのセットでUISCrollviewのpagingEnabledの感触を機能させる方法を見つけようとしています。 UITableViewの場合(実際にはそうではない場合)
これが私が達成しようとしていることです
私の質問は、そのフォームでセルをレイアウトする方法です。UICollectionViewLayoutをサブクラス化する必要があることは理解していますが、これを実現する方法と、UICollectionViewLayoutで有効にする必要がある場合、またはページングを同時に有効にする方法についてはよくわかりません。私はそれを自分で行います。
お知らせ下さい。
ios - UICollectionView に追加された複数の装飾ビュー
をサブクラス化する基本的なコレクション ビュー レイアウトを作成していますUICollectionViewFlowLayout
。ただし、いくつかの装飾ビューが重なり合っているように見えることに気付きました。
ユーザーが最後のセクションでアイテムを選択するたびに、以下のコードで新しいセクションを追加しています。このコードを実行するたびに、既存の各セクションに装飾ビューのコピーが 1 つ追加されるようです。
alpha
装飾ビューにof0.2f
を付けて、それらが積み重なるのを確認することで、これを裏付けました。
また、コレクション ビュー階層のダンプを実行したところ、 AFDecorationView
4 つしか表示されないはずのインスタンスが 10 個見つかりました。
別のカスタム レイアウトの例を見てみましたが、装飾ビューのかなりの数のインスタンスもインスタンス化されているようです。これは のバグUICollecionView
でしょうか? それとも、装飾ビュー レイアウト属性をlayoutAttributesForElementsInRect:
セクションごとに 1 回だけ追加するのは私たちの責任ですか?
カスタムレイアウトの装飾関連部分は以下のような感じです。
セクションごとに 1 つの装飾ビューのみが必要なので、最初のセクションに装飾ビューを追加します。
objective-c - UICollectionView PerformBatchUpdates:すべてのセクションをアニメーション化します
カスタムを作成していますが、コレクションビューで呼び出すと、すべてのセクションで呼び出されることに気付きUICollectionViewFlowLayout
ました。その結果、新しく追加されたセクションだけでなく、すべてのセクションにアニメーションが適用されます。initialLayoutAttributesForAppearingItemAtIndexPath:
initialLayoutAttributesForAppearingDecorationElementOfKind:atIndexPath:
performBatchUpdates:completion:
これまでに試したのはperformBatchUpdates:completion:
、単純な更新の代わりにへの呼び出しを削除することですが、既存のセクション(すべて)はとにかくアニメーション化されています。最後のセクションのみのレイアウト属性を変更していることを確認するための解決策を考え出しましたが、それはハックな感じがします。
これは、一部のセクションのみをアニメーション化するための適切な方法ですか?
ios - UICollectionView にセクション フッターを追加しようとするとクラッシュする
UICollectionView にセクション フッターを追加しようとしていますが、理解できない方法で失敗しています。
私はこのようにメインセルを設定しています:
xib は UICollectionViewCell のサブクラスであり、UILabel だけを含んでいます。これはすべてうまくいきます。
ここで、セクション フッターを追加したいので、これを追加します (上記のコードとインターリーブされるため、setCollectionViewLayout 呼び出しはシーケンスの最後の呼び出しのままです)。
今回の xib は UICollectionReusableView のサブクラスであり、ビューが含まれています (セクション間の水平の白い線を意味します)。ビューのサイズは 130 x 2 です。
footerReferenceSize 行を追加した瞬間、setCollectionViewLayoutLine でアプリがクラッシュします。
キャッチされていない例外 'NSRangeException' が原因でアプリを終了しています。理由: '-[__NSArrayM objectAtIndex:]: インデックス 0 が空の配列の境界を超えています'
これがどの配列であるかはわかりませんが、Google は何の助けも提供していません。何か案は?何かを接続するのを忘れたに違いないのですが、見つかりません。
ios - UICollectionViewFlowLayoutとサブクラス化UICollectionViewLayout
文書化されたアドバイスは、 「グリッドや線ベースの分割レイアウトなど」を行う場合はUICollectionViewフローレイアウトを使用することです。しかし、これが私の場合に当てはまるかどうかはわかりません。
グリッドが必要ですが、改行レイアウトは必要ありません。アイテムは、積み重ねることなく、水平方向と垂直方向の両方に無限に配置する必要があります。基本的に、コンテンツがフレームを超えた場合に水平または垂直にスクロールする巨大なチェス盤。
UICollectionView Flow Layoutをサブクラス化するには、次のことを行う必要があります。
prepareLayout
レイアウトがアイテムをラップしないようにオーバーライドします。これは大変な作業のようです。- オーバーライドし
collectionViewContentSize
ます。
Appleは、UICollectionView Flow Layoutの作成で「多くのハードワーク」を行ったと言っているので、可能であればそれを活用する必要があります。prepareLayout
しかし、改行をオフにするためにオーバーライドする必要がある場合、私は彼らの仕事の大部分を捨てているのではないかと思います。残っている彼らの仕事のうち、私はおそらくそれのほとんどをとにかく使用しないでしょう(例えばminimumLineSpacingForSectionAtIndex
)。
必要なレイアウトは非常に単純なので、代わりにUICollectionViewLayoutをサブクラス化する必要があると思います。理由は次のとおりです。
- サブクラスとデリゲートの間に分散するのではなく、すべてを1つのレイアウトクラスにまとめた、よりシンプルでクリーンな実装を実現します。
- どちらの場合もオーバーライドする必要があるため、 UICollectionView Flow Layoutをサブクラス化するよりもそれほど難しいことではないと思います。これが
prepareLayout
、すべての大変な作業になると思います。 - UICollectionView Flow Layoutサブクラスの上に別のクラッジを追加しようとするよりも、カスタムの方法で他のUICollectionViewLayoutAttributesを微調整するのに適した立場になります。
私の結論は正しいですか?