SwiftUI-パディングにマイナスの値があるため、ScrollViewは一番下までスクロールしません

マトロソフアレクサンダー

スクロールビューのコンテンツサイズまたはオフセットに問題があります。

ビューをスクロールしようとすると、元に戻って上部に固執しますが、ご覧のとおり、画面の下部にボタンがあり、ビューの下部にスクロールして[次へ]ボタン全体を表示したいと思います。

コンテンツサイズが間違っているようです:

ここに画像の説明を入力してください

これが私のコードhttps://github.com/matrosovDev/swiftuiのリポジトリです

すべてのコードを含むWelcomeViewコンポーネントがありますが、ここにもコピーして貼り付けます。おそらく、パディングまたはオフセットにマイナス値を使用すると、このスクロールビューのコンテンツサイズまたはオフセットの問題が発生します。

struct WelcomeView: View {

    @State private var password = ""
    @State var showWelcomeView = false
    @State var showActivityIndicator = false

    @EnvironmentObject var userService: UserService

    var body: some View {

        ZStack {
            Color.customLightGray
            if self.showActivityIndicator {
                VStack {
                    HStack {
                        Spacer()
                        LottieView(named: "19451-blue-preloader",
                                   loop: self.showActivityIndicator,
                                   size: 200
                        )
                        Spacer()
                    }
                }
            } else {

                ScrollView {

                    VStack {
                        Image("MountainWelcomBackground").resizable().frame(height: 300)

                        CircleImage(image: userService.user.image)
                            .padding(.top, -150)
                            .frame(height: 140)
                            .frame(width: 140)

                        VStack(alignment: .leading) {
                            HStack(alignment: .top) {
                                Spacer()
                                Text(userService.user.username)
                                    .font(.headline)
                                Spacer()
                            }
                        }
                        .padding(.top, -70)

                        VStack (alignment: .leading, spacing: 10) {

                            Text("Password:")
                                .font(.headline)

                            TextField("Enter your password", text: $password)
                                .padding(.all)
                                .font(Font.system(size: 18, weight: .medium, design: .rounded))
                                .overlay(RoundedRectangle(cornerRadius: 8).stroke(Color.customCorporateBlue, lineWidth: 1))
                                .foregroundColor(Color.customCorporateBlue)
                                .keyboardType(.emailAddress)
                                .autocapitalization(.none)

                            Button(action: {
                            }) {
                                Text("Forgot password?")
                                    .fontWeight(.bold)
                                    .font(.headline)
                                    .padding(EdgeInsets(top: 20, leading: 10, bottom: 20, trailing: 0))
                                    .foregroundColor(.customCorporateBlue)
                            }

                            HStack {
                                Button(action: {
                                }) {
                                    Text("Create account")
                                        .fontWeight(.bold)
                                        .font(.subheadline)
                                        .padding()
                                        .foregroundColor(.customCorporateBlue)
                                }

                                Spacer()

                                Button(action: {
                                    //self.showActivityIndicator.toggle()
                                    //self.fetchUser(with: self.email)
                                }) {
                                    Text("Next")
                                        .fontWeight(.bold)
                                        .font(.title)
                                        .padding(EdgeInsets(top: 20, leading: 40, bottom: 20, trailing: 40))
                                        .background(Color.customCorporateBlue)
                                        .cornerRadius(8)
                                        .foregroundColor(.white)
                                }

                                //NavigationLink(destination: WelcomeView(), isActive: $showWelcomeView) { EmptyView() }
                            }

                        }.padding(.horizontal, 30)
                            .modifier(AdaptsToKeyboard())
                            .padding(.top, -20)

                        Spacer()
                    }

                }.edgesIgnoringSafeArea(.top)
            }
        }
    }
}
彼の気性

これは、さまざまな電話のレイアウトに影響を与える多くのハードコーディングが原因です。この特定のユースケースでは、次の簡単なソリューションをお勧めします。

部分的に複製されたコードでテスト済み(Xcode 11.4 / iOS 13.4 / iPhone8 / 11 Max)

demo1 demo2

// make height of top image relative to available screen space
VStack {
    Image("MountainWelcomBackground")
       .resizable()
       .frame(height: UIScreen.main.bounds.size.height / 3.0)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SwiftUI、一番上までスクロールする方法は?

分類Dev

SwiftUI Viewは、入力なしで自動的に一番下までスクロールします

分類Dev

SwiftUI Viewは、入力なしで自動的に一番下までスクロールします

分類Dev

SwiftUIでの一番下のスクロール

分類Dev

SwiftUIはNavigationViewスタックの一番下に移動します

分類Dev

SwiftUI ScrollViewは、コンテンツがスクロールビューの境界に収まる場合、コンテンツを中央に配置しません

分類Dev

新しいデータ/ MacOSをリロードすると、スクロールSwiftUIリストが一番上にリセットされます

分類Dev

SwiftUIの水平ScrollViewには非表示のパディングがあります

分類Dev

SwiftUI-ScrollViewReaderのscrollToはスクロールしません

分類Dev

SwiftUIアラートまたはアクションシートを値型モデルプロパティのオプションにバインドする良い方法は何ですか(プロパティがnilのときにビューを表示します)?

分類Dev

SwiftUI:ScrollView内でスクロールする場合、ボタンの選択を無効にします

分類Dev

SwiftUI:ScrollViewが画面の高さを超えた場合にのみスクロール可能にします

分類Dev

形状にクリップされたSwiftUI画像には、コンテキストメニューに透明なパディングがあります

分類Dev

形状にクリップされたSwiftUI画像には、コンテキストメニューに透明なパディングがあります

分類Dev

ディクショナリの値をSwiftUIコントロールにバインドする方法は?

分類Dev

ScrollView内のSwiftUIテキスト、両方の軸でスクロールできません

分類Dev

SwiftUI・バックグラウンドタイマーはシミュレーターでは機能しますが、実際のデバイスでは機能しません

分類Dev

SwiftUI・バックグラウンドタイマーはシミュレーターでは機能しますが、実際のデバイスでは機能しません

分類Dev

SwiftUIにdefaultValueのパディングはありますか?

分類Dev

SwiftUI「プロパティ初期化子内でインスタンスメンバー「numberOfDevice」を使用できません。プロパティ初期化子は「self」が使用可能になる前に実行されます」エラー

分類Dev

SwiftUI:iPhoneX以降のデバイスではナビゲーションバーが画面の上部に表示されません

分類Dev

SwiftUIバインディングは子階層では機能しません

分類Dev

SwiftUIリストのデモを再作成しようとすると、「複雑なクロージャの戻り値の型を推測できません。明確にするために明示的な型を追加してください」というエラーが表示されます。

分類Dev

すべてのバインディングデータが読み込まれると、ListViewが一番下までスクロールします

分類Dev

SwiftUIを使用してCloudFirestoreのコレクション「プロファイル」からデータを取得します。タイプ '[String:Any]'の値をタイプ 'UserProfile'に割り当てることができません

分類Dev

@Publishedクラスにはメンバーがありません。SwiftUIを組み合わせる

分類Dev

SwiftUI:パス.anchorPreference

分類Dev

SwiftUIカスタムリストはForEachでバインディングを使用できません

分類Dev

リストがスクロールしない(SwiftUIで-他の質問から明確にするため)

Related 関連記事

  1. 1

    SwiftUI、一番上までスクロールする方法は?

  2. 2

    SwiftUI Viewは、入力なしで自動的に一番下までスクロールします

  3. 3

    SwiftUI Viewは、入力なしで自動的に一番下までスクロールします

  4. 4

    SwiftUIでの一番下のスクロール

  5. 5

    SwiftUIはNavigationViewスタックの一番下に移動します

  6. 6

    SwiftUI ScrollViewは、コンテンツがスクロールビューの境界に収まる場合、コンテンツを中央に配置しません

  7. 7

    新しいデータ/ MacOSをリロードすると、スクロールSwiftUIリストが一番上にリセットされます

  8. 8

    SwiftUIの水平ScrollViewには非表示のパディングがあります

  9. 9

    SwiftUI-ScrollViewReaderのscrollToはスクロールしません

  10. 10

    SwiftUIアラートまたはアクションシートを値型モデルプロパティのオプションにバインドする良い方法は何ですか(プロパティがnilのときにビューを表示します)?

  11. 11

    SwiftUI:ScrollView内でスクロールする場合、ボタンの選択を無効にします

  12. 12

    SwiftUI:ScrollViewが画面の高さを超えた場合にのみスクロール可能にします

  13. 13

    形状にクリップされたSwiftUI画像には、コンテキストメニューに透明なパディングがあります

  14. 14

    形状にクリップされたSwiftUI画像には、コンテキストメニューに透明なパディングがあります

  15. 15

    ディクショナリの値をSwiftUIコントロールにバインドする方法は?

  16. 16

    ScrollView内のSwiftUIテキスト、両方の軸でスクロールできません

  17. 17

    SwiftUI・バックグラウンドタイマーはシミュレーターでは機能しますが、実際のデバイスでは機能しません

  18. 18

    SwiftUI・バックグラウンドタイマーはシミュレーターでは機能しますが、実際のデバイスでは機能しません

  19. 19

    SwiftUIにdefaultValueのパディングはありますか?

  20. 20

    SwiftUI「プロパティ初期化子内でインスタンスメンバー「numberOfDevice」を使用できません。プロパティ初期化子は「self」が使用可能になる前に実行されます」エラー

  21. 21

    SwiftUI:iPhoneX以降のデバイスではナビゲーションバーが画面の上部に表示されません

  22. 22

    SwiftUIバインディングは子階層では機能しません

  23. 23

    SwiftUIリストのデモを再作成しようとすると、「複雑なクロージャの戻り値の型を推測できません。明確にするために明示的な型を追加してください」というエラーが表示されます。

  24. 24

    すべてのバインディングデータが読み込まれると、ListViewが一番下までスクロールします

  25. 25

    SwiftUIを使用してCloudFirestoreのコレクション「プロファイル」からデータを取得します。タイプ '[String:Any]'の値をタイプ 'UserProfile'に割り当てることができません

  26. 26

    @Publishedクラスにはメンバーがありません。SwiftUIを組み合わせる

  27. 27

    SwiftUI:パス.anchorPreference

  28. 28

    SwiftUIカスタムリストはForEachでバインディングを使用できません

  29. 29

    リストがスクロールしない(SwiftUIで-他の質問から明確にするため)

ホットタグ

アーカイブ