Центрируйте и выровняйте элементы SwiftUI в ScrollView - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть следующий вид SwiftUI:

import SwiftUI

struct MySwiftUIView: View {
    var body: some View {
        VStack {
            HStack {
                Text("top leading text")
                Spacer()
            }
            Spacer()
            HStack {
                Spacer()
                Text("centered text")
                Spacer()
            }
            Spacer()
            HStack {
                Spacer()
                Text("bottom trailing text")
            }
        }
    }
}

При запуске это выглядит так:

enter image description here

Если я вставлю представление в ScrollView выглядит так:

import SwiftUI

struct MySwiftUIView: View {
    var body: some View {
        ScrollView {
            VStack {
                HStack {
                    Text("top leading text")
                    Spacer()
                }
                Spacer()
                HStack {
                    Spacer()
                    Text("centered text")
                    Spacer()
                }
                Spacer()
                HStack {
                    Spacer()
                    Text("bottom trailing text")
                }
            }
        }
    }
}

Тогда это выглядит так при запуске:

enter image description here

Как сделать Я делаю центрированный текст по центру, а нижний конечный текст покоится снизу, когда они встроены в ScrollView?

В некотором смысле, я хочу использовать SwiftUI для репликации этого поведения прокрутки, наблюдаемого в Xcode инспекторы, где текст «Не применимо» находится по центру и прокручивается:

enter image description here

1 Ответ

1 голос
/ 04 апреля 2020

Оберните ScrollView внутри GeometryReader. Затем примените минимальную высоту к виду прокрутки, равную geometry.size.height. Теперь проставки, которые вы применили, должны заполнить VStack так, как вы хотели. Попробуйте код ниже:

GeometryReader { geometry in
    ScrollView(.vertical) {
        VStack {
            HStack {
                Text("top leading text")
                Spacer()
            }
            Spacer()
            HStack {
                Text("centered text")
            }
            Spacer()
            HStack(alignment: .bottom) {
                Spacer()
                Text("bottom trailing text")
            }
         }
         .padding()
         .frame(width: geometry.size.width)
         .frame(minHeight: geometry.size.height)

    }
}

Также проверьте этот пост для дальнейшего обсуждения этой проблемы: SwiftUI - Вертикальное центрирование содержимого внутри Scrollview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...