• 1000
Код:
struct SplitView<Left:View, Right:View>: View
{
@State var left : () -> Left
@State var right : () -> Right
@State var splitterWidth = 10
@State var splitterLocation = 120
var body: some View
{
GeometryReader()
{
geometry in
HStack( spacing:0)
{
left().frame( width:CGFloat(splitterLocation), height: geometry.size.height)
Text(" ").frame( width : CGFloat( splitterWidth), height : CGFloat( geometry.size.height))
.background(Color.yellow)
right().frame(width: geometry.size.width - CGFloat( self.splitterWidth + self.splitterLocation), height: geometry.size.height)
.background(Color.red)
}
}
}
}
struct SplitView_Previews: PreviewProvider
{
static var previews: some View
{
SplitView( left: {Text("green").background(Color.green)},
right: {Text("red")})
.frame(width:300, height:300)
}
}
, который дает:
введите описание изображения здесь
Я хочу, чтобы внутренние представления правильно масштабировались в соответствии с выделенным им пространством (и изменяли их размер при перетаскивании разделителя) - но проблема демонстрируется цветами фона - зеленый явно не что желательно. Как передать представление так, чтобы получить желаемый результат (ie все, что я передаю, изменяется, чтобы заполнить контейнер)