我正在swiftui中创建一个自定义容器视图-我希望它缩放您放入其中的视图-但它似乎没有按我期望的那样工作,只是想知道我在做错什么。
代码:
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)
}
}
产生:
我希望它正确地将内部视图缩放到分配给它们的空间(并在拖动拆分器时调整它们的大小)-但问题是由背景色所显示的-绿色显然不是所希望的。如何传递视图,以便获得所需的结果(即,我传递的内容都会调整大小以填充容器)
答案 0 :(得分:0)
您期望的效果可以通过
实现 SplitView(
left: {
Text("green")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.green)
},
right: {Text("red")}
).frame(width:300, height:300)
默认情况下,SwiftUI视图打算缩小为固有内容。