matchedGeometryEffect效果不对

在学swiftUI的各种animation。然后写了一段来看matchedGeometryEffect的效果。然后我期待的效果是这样的。
在这里插入图片描述
以下是代码

struct MatchedGeometryView: View {
    @Namespace private var shapeTransition
    @State var exchange = false
    var body: some View {
        VStack{
            HStack{
                if exchange {
                    Circle()
                        .frame(width: 50)
                        .matchedGeometryEffect(id: "circle", in: shapeTransition)
                        //.frame(width: 50)
                        
                }
                Spacer()
                if !exchange {
                    RoundedRectangle(cornerRadius: 10)
                        .matchedGeometryEffect(id: "circle", in: shapeTransition)
                        .frame(width: 100, height: 100)
                       
                }
            }
        }
        .onTapGesture{
            withAnimation(.linear(duration: 1)){
                exchange.toggle()
            }
        }
        .foregroundColor(.blue)
    }
}

但实际上我运行的结果是这样的。
在这里插入图片描述
就是丑的不像样子。
然后我找了很久找到了原因。

Circle()
    .frame(width: 50)
    .matchedGeometryEffect(id: "circle", in: shapeTransition)

这里的两个modifier顺序是有要求的,必须把frame放到后面。
别问我为什么抄示例中的代码时会发生这种事。
我先画了连个图形,然后加上的matchedGeometryEffect,按照习惯,我会把新的modifier放到后面。就这样了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值