Прокручиваемый полноэкранный режим просмотра swift - PullRequest
0 голосов
/ 10 января 2020

I sh для создания полноэкранного прокручиваемого вида в Swift UI. У меня возникла проблема с отображением полноэкранных представлений после помещения их в режим прокрутки и вертикальный стек? Какие-либо предложения?

Так выглядит мой код

struct ContentView : View {
    var body: some View {

        //var posts = [Post(postColor: .red), Post(postColor: .blue), Post(postColor: .green)]
        ScrollView(.vertical, showsIndicators: false) {

            VStack {
                Post(postColor: .red)
                Post(postColor: .blue)
                Post(postColor: .green)

            }
        }
    }

}

struct Post : View {

    var postColor : Color

    var body : some View {

        VStack(alignment: .leading) {

                HStack {
                    Text("Name")
                        .font(.title)
                        .fontWeight(.heavy)

                    Spacer()
                   }

                Text("@Username")
                    .lineLimit(nil)
                    .font(.body)


                   Spacer()
                   }.background(postColor)

    }

}

Изображение Это вывод, полученный после встраивания в представление прокрутки.

Изображение Я хочу sh, чтобы иметь такой же полноэкранный режим, но с возможностью прокрутки вниз до следующего вида (в основном прокрутка вниз до следующего экрана)

1 Ответ

0 голосов

Вы можете использовать GeometryReader для достижения этой цели:

struct FullScreenViewsInScrollView: View {
    var body: some View {

        GeometryReader { geometry in

            ScrollView {

                VStack(spacing: 0) {
                    Rectangle()
                        .foregroundColor(.red)
                        .frame(height: geometry.size.height)

                    Rectangle()
                        .foregroundColor(.blue)
                        .frame(height: geometry.size.height)

                    Rectangle()
                        .foregroundColor(.green)
                        .frame(height: geometry.size.height)
                }

            }

        }
    }

}

результат должен быть ( Я немного прокрутился в режиме предварительного просмотра ):

enter image description here

...