Animation 在SwiftUI中按视图高度设置视图动画
我正在尝试创建一个视图,该视图将从屏幕底部为另一个内容视图设置动画。但是,以下代码起作用,因为内容视图的高度未知,200偏移可能不正确。如何获取内容的高度以正确偏移视图Animation 在SwiftUI中按视图高度设置视图动画,animation,swiftui,offset,Animation,Swiftui,Offset,我正在尝试创建一个视图,该视图将从屏幕底部为另一个内容视图设置动画。但是,以下代码起作用,因为内容视图的高度未知,200偏移可能不正确。如何获取内容的高度以正确偏移视图 struct Test<Content>: View where Content : View { @State var showing: Bool = false var content: Content var body: some View { VStack {
struct Test<Content>: View where Content : View {
@State var showing: Bool = false
var content: Content
var body: some View {
VStack {
Button(action: {
withAnimation {
self.showing.toggle()
}
}) {
Text("Toggle")
}
Spacer()
HStack {
Spacer()
content
Spacer()
}
.background(Color.red)
.padding(10)
.offset(y: showing ? 200 : 0)
}
}
}
struct Test:View其中Content:View{
@状态变量显示:Bool=false
var-content:content
var body:一些观点{
VStack{
按钮(操作:{
动画片{
self.showing.toggle()
}
}) {
文本(“切换”)
}
垫片()
HStack{
垫片()
内容
垫片()
}
.背景(颜色.红色)
.填充(10)
.偏移量(y:显示?200:0)
}
}
}
这里有一种可能的方法,在对齐过程中直接从中读取内容
高度
struct Test<Content>: View where Content : View {
var content: Content
@State private var showing: Bool = false
@State private var contentHeight: CGFloat = .zero
var body: some View {
VStack {
Button(action: {
withAnimation {
self.showing.toggle()
}
}) {
Text("Toggle")
}
Spacer()
HStack {
Spacer()
content
.alignmentGuide(VerticalAlignment.center) { d in
DispatchQueue.main.async {
self.contentHeight = d.height
}
return d[VerticalAlignment.center]
}
Spacer()
}
.background(Color.red)
.padding(10)
.offset(y: showing ? contentHeight : 0)
}
}
}
struct Test:View其中Content:View{
var-content:content
@状态私有变量显示:Bool=false
@国家私有变量contentHeight:CGFloat=.0
var body:一些观点{
VStack{
按钮(操作:{
动画片{
self.showing.toggle()
}
}) {
文本(“切换”)
}
垫片()
HStack{
垫片()
内容
.alignmentGuide(垂直对齐.中心){d英寸
DispatchQueue.main.async{
self.contentHeight=d.height
}
返回d[垂直对齐.中心]
}
垫片()
}
.背景(颜色.红色)
.填充(10)
.偏移量(y:显示?内容高度:0)
}
}
}