問題タブ [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.
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」をタップすると、新しくレンダリングされた画面は次のようになります。
したがって、次のコードが与えられます。
- (白い) オーバーレイ ビューのフレームを、タップしたセルのビューのフレームと一致させるにはどうすればよいですか? 幅と高さは問題ないようですが、位置がずれています。(私は何を間違っていますか?)
- タップしたセルの真上に配置すると、白いビューをフルスクリーンでアニメーション化するにはどうすればよいですか?
swiftui - SwiftUI: スクロール中に LazyVGrid が更新されない
検索結果を表示する LazyVGrid があります。検索フィールドに文字を入力すると、CoreData フェッチ リクエストが実行され、@Published
プロパティが更新されます。
問題:
LazyVGrid は、現在スクロールしている場合を除き、期待どおりに結果を更新します。この場合、スクロールが減速して終了するのを待ってから更新します。
比較のために、UIKit では UICollectionView を使用してそれを呼び出すことができ、.reloadData()
スクロールするかどうかに関係なく、グリッドをすぐに更新します。
テスト目的で、次のことを試しましたが成功しませんでした。
.animation(nil)
ビュー修飾子を追加.id(UUID())
ビュー修飾子を追加- ビューを更新したいときにaを更新
@State var dummy = ""
し、ビューの本文で使用します。Text(dummy)
以下は、このことがどのように機能するかを視覚化するのに役立つコードです
スクロールアニメーションの実行中にLazyVGridでコンテンツイベントを更新する方法はありますか? そうしないと、ユーザーにとって反応が鈍く感じられます。