Ios 在苹果示例应用程序中打开配料卡时,如何重现美丽的过渡;Fruta“;
一般来说,我对swiftUI和iOS开发比较陌生,最近我下载了苹果的示例代码“fruta”,它使用了应用程序剪辑、小部件等Ios 在苹果示例应用程序中打开配料卡时,如何重现美丽的过渡;Fruta“;,ios,swiftui,Ios,Swiftui,一般来说,我对swiftUI和iOS开发比较陌生,最近我下载了苹果的示例代码“fruta”,它使用了应用程序剪辑、小部件等 当你打开一个配料时,我想做一些类似于转换的事情,但无论我如何深入他们的代码,我都找不到他们是如何做到的。我找到了一种方法,但我认为这不是最理想的方法 struct IngredientCardTest: View { @State var isCardShown = false @Namespace var namespace var body: some View {
当你打开一个配料时,我想做一些类似于转换的事情,但无论我如何深入他们的代码,我都找不到他们是如何做到的。我找到了一种方法,但我认为这不是最理想的方法
struct IngredientCardTest: View {
@State var isCardShown = false
@Namespace var namespace
var body: some View {
GeometryReader { geo in
if isCardShown {
RoundedRectangle(cornerRadius: 25)
.matchedGeometryEffect(id: "card", in: namespace)
.frame(maxWidth: 300, maxHeight: 350, alignment: .center)
.scaleEffect(isCardShown ? -1 : 1)
.frame(maxWidth: geo.size.width, maxHeight: geo.size.height, alignment: .center)
.onTapGesture {
withAnimation(.spring()) {
isCardShown.toggle()
}
}
} else {
RoundedRectangle(cornerRadius: 25)
.matchedGeometryEffect(id: "card", in: namespace)
.frame(maxWidth: 190, maxHeight: 190, alignment: .center)
.scaleEffect(isCardShown ? -1 : 1)
.frame(maxWidth: geo.size.width, maxHeight: geo.size.height, alignment: .center)
.onTapGesture {
withAnimation(.spring()) {
isCardShown.toggle()
}
}
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
}
}你尝试过什么吗?我尝试过使用.spring()动画(失败得很厉害),我尝试过.mathchedGeometryEffect(id:“card”,名称空间:namespace),我尝试过线性动画