問題タブ [lazyvgrid]

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 投票する
0 に答える
31 参照

swift - SwiftUI Grid が使用可能なスペースに適応しないのはなぜですか?

SwiftUI Grid が使用可能なスペースに適応しないのはなぜですか? どうすれば修正できますか?

Apple の WWDC ビデオ「Stacks, Grids, and Outlines in SwiftUI」のコードをたどって変更しようとしました。

ここに画像の説明を入力

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

swiftui - SwiftUI:グローバルフレーム情報を使用してビューを配置し、フルスクリーンにアニメーション化しますか?

SwiftUI の LazyVGrid、レイアウト、およびフレーム/座標空間に慣れ、それぞれが画面の幅の 1/4 である 4 つの列を持つグリッドを描画しようとしています。その上、セルをタップすると、タップされたセルの上にビューを正確に配置し、全画面表示 (または選択したカスタム フレーム) にアニメーション化します。

次のコードがあります。

最も外側のジオメトリ プロキシは、このサイズのログを提供します。

セル側: 341.5. cellSide * 列: 1366.0、geoProxy.size.width: 1366.0

これがレンダリングされるものです:

ここに画像の説明を入力

たとえば、セル 1 をタップすると、次のように記録されます。

local frame: (0.0, 0.0, 341.0, 341.0), globalFrame: (0.25, 0.0, 341.0, 341.0), testCSpace: (0.25, 0.0, 341.0, 341.0) タップセル情報: CellInfo(cellId: "Cell 1", globalFrame: (0.25, 0.0, 341.0, 341.0))

「Cell 6」をタップすると、新しくレンダリングされた画面は次のようになります。

ここに画像の説明を入力

したがって、次のコードが与えられます。

  1. (白い) オーバーレイ ビューのフレームを、タップしたセルのビューのフレームと一致させるにはどうすればよいですか? 幅と高さは問題ないようですが、位置がずれています。(私は何を間違っていますか?)
  2. タップしたセルの真上に配置すると、白いビューをフルスクリーンでアニメーション化するにはどうすればよいですか?
0 投票する
0 に答える
329 参照

swiftui - SwiftUI: スクロール中に LazyVGrid が更新されない

検索結果を表示する LazyVGrid があります。検索フィールドに文字を入力すると、CoreData フェッチ リクエストが実行され、@Publishedプロパティが更新されます。

問題:
LazyVGrid は、現在スクロールしている場合を除き、期待どおりに結果を更新します。この場合、スクロールが減速して終了するのを待ってから更新します。

比較のために、UIKit では UICollectionView を使用してそれを呼び出すことができ、.reloadData()スクロールするかどうかに関係なく、グリッドをすぐに更新します。

テスト目的で、次のことを試しましたが成功しませんでした。

  • .animation(nil)ビュー修飾子を追加
  • .id(UUID())ビュー修飾子を追加
  • ビューを更新したいときにaを更新@State var dummy = ""し、ビューの本文で使用します。Text(dummy)

以下は、このことがどのように機能するかを視覚化するのに役立つコードです

スクロールアニメーションの実行中にLazyVGridでコンテンツイベントを更新する方法はありますか? そうしないと、ユーザーにとって反応が鈍く感じられます。