Как растянуть View до родительского фрейма с помощью SwiftUI? - PullRequest
1 голос
/ 17 июня 2019

Ниже вы видите изображение и черный квадрат, который я хочу растянуть до красных границ.

Я пробовал следующее

import SwiftUI
struct ContentView : View {
    var body: some View {
        HStack(spacing: 1) {
            Rectangle().frame(width:20).foregroundColor(.red).frame(width:20)
            ScrollView {
                VStack {
                    ForEach(0..<5) { index in
                        Rectangle().frame(minWidth: 50, maxWidth: .infinity, minHeight: 50, maxHeight: 50)
                    }
                }.relativeWidth(1)
            }
            Rectangle().foregroundColor(.red).frame(width:20)
        }
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View { ContentView() }
}
#endif

, но результат таков:

enter image description here

1 Ответ

4 голосов
/ 17 июня 2019

Вы можете использовать GeometryReader , обернуть в него свой ScrollView и установить ширину содержимого в соответствии с размером ширины геометрии.A GeometryReader:

возвращает гибкий предпочтительный размер для родительского макета.

Таким образом, ваш код будет выглядеть примерно так:

HStack(spacing: 1) {
     Rectangle().frame(width:20).foregroundColor(.red).frame(width:20)
     GeometryReader { geometry in
          ScrollView {
               VStack {
                    ForEach(0..<5) { index in
                         Rectangle().frame(minWidth: 50, maxWidth: .infinity, minHeight: 50, maxHeight: 50)
                    }
                }.relativeWidth(1)
               .frame(width: geometry.size.width)
          }
     }
     Rectangle().foregroundColor(.red).frame(width:20)
}

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