問題タブ [swiftui-scrollview]

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 に答える
328 参照

swiftui - スクロール上のSwiftUIカレンダーは現在の月を取得します

カレンダーがスクロールされている現在の月を取得しようとしています。私の目標は、現在の月のヘッダーを表示することです。次に、ビューを新しい月までスクロールすると、ヘッダーが対応する月に更新されます。LazyVStack を使用してみましたが、onAppear メソッドで現在の月を設定しましたが、lazyVStack の使用は一貫性がなく、常に数か月ずれています。以下のコードは、iPad カレンダーの月表示用に最適化されています。

0 投票する
5 に答える
5058 参照

ios - SwiftUI: LazyVStack または LazyHStack を ScrollView に配置すると、スタッターが発生します (Apple のバグ??)

XCode バージョン 12.4 (12D4e)

ScrollView 内に Lazy スタックを実装するたびに、これに遭遇しました。

  1. LazyHStackaを横に、ScrollViewまたは aLazyVStackを縦に追加するScrollView
  2. スクロール ビューのコンテンツ サイズがその境界を超えるように、十分なコンテンツを追加します。

シナリオ 1 - 境界を超えてスクロールビューをプルする (リフレッシュするためにプルしているように)

期待される動作: スクロール ビューが指の下にある場合は、期待どおりに動作します。

観察された行動: 吃音とジャンプ

シナリオ 2 - バウンドするように端まですばやくスクロールする

期待される動作: スムーズに跳ねる

観察された動作: 端に到達すると停止して揺れますが、跳ねません。

私の理論 私の理論では、Lazy スタックを使用しているため、ビューが画面から消えると、ビュー階層から削除され、スタッターが発生します。

他の誰かがこれに遭遇したのだろうか?これはSwiftUIのバグですか? 私はこれを数か月間、さまざまなプロジェクトで確実に再現してきましたが、できればLazyスタックを使用しないことに頼ることになりました。

サンプルコード

注: スタッターはスクロール ビューの上部でのみ発生します

** 2021 年 7 月 10 日更新**

これは、iOS 15、バージョン 13.0 ベータ版 (13A5155e) でも発生しています。

下のビデオでは、スクロールバーの動作と、一番下に到達したときのカクつきに注目してください。

https://youtu.be/z2pybl5yYqk

** 2021 年 7 月 19 日更新**

ビュー内のすべてを切り取って、1 つずつ元に戻しました — 単純な要素のVStack/HStack/ZStack周りに aを配置するとすぐに、LazyVStack が途切れ始めます。Text

要素に追加fixedSize(horizontal: false, vertical: true)すると、Text吃音が停止するようです。可変高さを追加するとすぐに、UIViewRepresentable再びスタッターし始めます。

LazyStack では、すべての子が何らかの固定サイズであるか、純粋な SwiftUI ビューである必要があるようです。

掘り続けます。解決しなければなりません...

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

swiftui - SwiftUI: 水平方向にアイコンのスクロール ビューを作成する方法

この画像のように見えるように、水平ビューのソーシャルメディアアイコンのスクロールビューをスケーリングおよびサイズ変更したかった

-スクロール ビューとリスト ビューのどちらを使用する必要がありますか? 水平方向にも

このコードを試してみましたが、うまくいきませんでした。見逃した可能性のある解決策はありますか?