Ошибка макета ScrollView при применении модификатора Frame - PullRequest
0 голосов
/ 18 марта 2020

Я наткнулся на проблему с макетом ScrollView в SwiftUI. Я думаю, что это ошибка SwiftU, но я хочу еще раз проверить вас.

Вот мой простой код просмотра:

struct ContentView: View {
    var body: some View {
        ScrollView(.vertical) {
            Text("Hello, World!")
                .background(Color.red)
        }
        .frame(width: 300, height: 300)
        .background(Color.blue)
    }
}

И вот как это выглядит. Вы можете видеть, что «Hello World» находится за пределами рамки прокрутки. Это нормально? Есть ли способ исправить это?

enter image description here

Все работает, как и ожидалось, когда я удаляю модификатор frame(...). enter image description here

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

есть одна из ужасных ошибок, я предлагаю следующий обходной путь

struct ContentView: View {
    var body: some View {
        ScrollView(.vertical, showsIndicators: true) {
            Text("Hello, World!")
                .background(Color.red)
        }
        // workaround, please report the bug to Apple !!
        .offset(x: 0, y: 0.5)
        .background(Color.yellow)
        .frame(width: 200, height: 200)
    }
}

enter image description here

0 голосов
/ 18 марта 2020

Вот какой-то обходной путь (может быть приемлем в некоторых случаях как временное решение)

Протестировано с Xcode 11.2 / iOS 13.2

demo

var body: some View {
    GeometryReader { gp in
        ScrollView {
            Text("Hello, World!")
                .background(Color.red)
        }
        .frame(maxWidth: 300, maxHeight: 300)
        .background(Color.blue)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...