Ios matchedGeometryEffect不';我不能正常工作
使用本文的最后一个示例,您将看到当Ios matchedGeometryEffect不';我不能正常工作,ios,swift,swiftui,Ios,Swift,Swiftui,使用本文的最后一个示例,您将看到当iszomed切换为false时,文本的动画效果不佳。我不明白为什么 struct ContentView:View{ @命名空间私有变量动画 @状态私有变量isZoomed=false 变量帧:CGFloat{ 放大了吗?300:44 } var body:一些观点{ VStack{ 垫片() VStack{ HStack{ 圆角转角(拐角半径:10) .填充(颜色.蓝色) .框架(宽度:框架,高度:框架) .padding(.top,已缩放?20:0) 如果
iszomed
切换为false时,文本的动画效果不佳。我不明白为什么
struct ContentView:View{
@命名空间私有变量动画
@状态私有变量isZoomed=false
变量帧:CGFloat{
放大了吗?300:44
}
var body:一些观点{
VStack{
垫片()
VStack{
HStack{
圆角转角(拐角半径:10)
.填充(颜色.蓝色)
.框架(宽度:框架,高度:框架)
.padding(.top,已缩放?20:0)
如果已缩放==false{
文本(“泰勒·斯威夫特——1989年”)
.matchedGeometryEffect(id:“AlbumTitle”,在:动画中)
.font(.headline)
垫片()
}
}
如果已缩放==真{
文本(“泰勒·斯威夫特——1989年”)
.matchedGeometryEffect(id:“AlbumTitle”,在:动画中)
.font(.headline)
.padding(.bottom,60)
垫片()
}
}
.ontapsigne{
使用动画(.spring()){
self.isZoomed.toggle()
}
}
.padding()
.frame(最大宽度:。无穷大)
.帧(高度:已缩放?400:60)
.背景(颜色(白色:0.9))
}
}
}
将每个可移动部件包装到自己的堆栈中,容器将正确地删除视图
使用Xcode 12.1/iOS 14.1进行测试
VStack {
HStack {
RoundedRectangle(cornerRadius: 10)
.fill(Color.blue)
.frame(width: frame, height: frame)
.padding(.top, isZoomed ? 20 : 0)
HStack { // << here !!
if isZoomed == false {
Text("Taylor Swift – 1989")
.matchedGeometryEffect(id: "AlbumTitle", in: animation)
.font(.headline)
Spacer()
}}
}
VStack { // << here !!
if isZoomed == true {
Text("Taylor Swift – 1989")
.matchedGeometryEffect(id: "AlbumTitle", in: animation)
.font(.headline)
.padding(.bottom, 60)
Spacer()
}
}
}
VStack{
HStack{
圆角转角(拐角半径:10)
.填充(颜色.蓝色)
.框架(宽度:框架,高度:框架)
.padding(.top,已缩放?20:0)
HStack{//对此有解释吗?也只适用于第二个VStack。