問題タブ [uicollectionviewflowlayout]

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.

0 投票する
8 に答える
80342 参照

ios - UICollectionView - セル間の距離?

セル幅が 67 の UICollectionView を使用していますが、現在はフロー レイアウトを使用しています。

セル間に 30px のスペースがある 3 つのセルが連続しています。4 つのセルを一列に並べられるようにするには、どうすればその距離を縮めることができるでしょうか? この方法は何か関係がありますか?

0 投票する
0 に答える
535 参照

swift - UICollectionView の並べ替えの終了を検出しています

最初のn 個のセルをロックしながら、UICollectionView の並べ替えのオプションを提供したいと考えています。

最初のn 個のセルが「ロック」されている (並べ替えできない) ことを示すために、背景色を明るい灰色に変更したいと考えています。

これまでのところ、セルのロックを達成することができましたtargetIndexPathForMoveFromItemAt

私が抱えている問題は、ロックされたセルの背景色を通常に設定できるように、ユーザーが並べ替えセルを解放したことを検出することです。

使用してみましmoveItemAtたが、ユーザーが並べ替えをアクティブにしたときに呼び出されませんが、元のセルを元のインデックスに戻すか、並べ替えがキャンセルされた場合に呼び出されます。

使用してみましたが、そのメソッドは、ユーザーがセルを離した後ではなく、 のdidUnhighlightItemAt直後に呼び出されます。targetIndexPathForMoveFromItemAt

0 投票する
0 に答える
535 参照

ios - 水平 UICollectionView 単一行レイアウトの自己サイズ変更 - セルではありません

使用事例:

  • 製品を表示する があります。UICollectionViewそれを呼び出しましょうproductsViewCollection(複数の がある 1 つの行のみProductCell)。
  • 高さはそれぞれProductCell異なりますが、幅はすべて同じです。
  • ProductCell実行時に追加される場合があります。
  • sに応じて、自己サイズ変更セルを使用していAutoLayoutますProductCell
  • UICollectionViewFlowLayout製品セルの配置を上にするカスタムクラスがあります。

    /li>

何が問題ですか?

  • (1) の高さを決定する方法が見つかりませんでしたproductsCollectionView
  • productsCollectionView(2) 強制的に1 行だけを表示する方法が見つかりませんでした。
  • (3) 最初の項目にスクロールするために先頭に new を挿入ProductCell! productsCollectionView、同じ位置に保持する必要があります。

私が試したことは?

  • 問題(1)の試行:
    • の高さを決定する必要があるため、高さなしで幅を決定することはできません。productsCollectionViewそうしないと、ProductCells が表示されません。
    • したがって、高さの制約を設定しようとしましたが、アプリがクラッシュし"The behavior of the UICollectionViewFlowLayout is not defined because the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values."productsCollectionViewインセットがありません (水平 UICollectionView 単一行レイアウト)。
    • collectionView.contentSize高さの制約を使用して高さを決定することも試みましproductsCollectionViewたが、呼び出した場合でも最終的に計算されたサイズがないため、機能しませんでしたlayoutIfNeededまたは同様の方法( FlowLayoutおよび他の多くのリンクを使用してUICollectionViewの高さを決定する方法) .
    • collectionView.collectionViewlayout.collectionViewContentSize高さの制約を使用して高さを決定することも試みましproductsCollectionViewたが、機能しませんでした。幅は正しく計算されますが、高さは最大の高さにAutoLayout依存しない制約に従って決定されるため、ProductCell高さを自動的に決定する方法 (FlowLayout および他の多くのリンクを使用して UICollectionView の高さを決定する方法)。
    • ProductCellそのため、最後にs max heightに応じて高さを手動で変更しようとしproductsViewCollectionました.MyViewControllerlayoutAttributesForItemproductsViewCollectionProductCell
    • それは機能しましたが、他の製品を挿入する必要がある場合は同じことを行う必要がありますが、これにより UI で間違った動作が発生し、productsCollectionView数ミリ秒間展開してから正しくトリミングされます :(.
  • 問題 (2) の試行:
    • もちろん、私はそれを水平にしましたが、これでは十分ではありません。製品の高さの合計が高さよりも小さい場合、フロー レイアウトは製品を同じ列に追加しますproductsCollectionView( UICollectionView で 1 行を表示 - Swift )。
    • そのため、より大きな値を設定しようとしminimumInteritemSpacingましたが、100% 正しくは機能しませんでした。最後に余分なスペースが追加されます ( UICollectionView: One Row or Column )。
    • メソッドでカスタムクラスを使用ProductCellして高さと同じ高さにしようとしましたが、機能しませんでした.高さは変更されましたが、同じ列のセルでした.理由はわかりません!productsCollectionViewUICollectionViewFlowLayoutlayoutAttributesForItem
  • 問題(3)の試行:
    • 新しいアイテムを挿入するとスクロールが発生する理由がわかりません。最初のアイテムの場合もあれば、いくつかのアイテムの前の場合もあり、奇妙なサイズ変更アニメーションで正しく機能する場合もあります。とにかく、サイズ変更productsCollectionViewコードを無効にしようとしましたが、何も起こりませんでした。
    • 現在を保存してから適用しようとしましたが、パラメーターproductsCollectionView.contentOffsetを に設定した場合にのみ機能し、そうでない場合は不特定のスクロールになります。animatedtrue

注: 下手な英語で申し訳ありません。ありがとうございます。