标签: swiftui-transition

使用导航链接在视图之间导航时使用匹配几何效果

我的主视图包含CustomView,点击时可通过 来打开详细视图NavigationLink。详细视图还包含CustomView,只是位置不同。

CustomView我可以使用匹配几何效果在单击导航链接时对位置进行过渡/动画吗?

struct HomeView: View {
    @Namespace var namespace
    
    var body: some View {
        NavigationStack {
            VStack {
                Text("Top")
                NavigationLink {
                    DetailView(namespace: namespace)
                } label: {
                    CustomView()
                        .matchedGeometryEffect(id: "testId", in: namespace)
                }
                Text("Bottom")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
struct DetailView: View {
    var namespace: Namespace.ID
    
    var body: some View {
        VStack {
            CustomView()
                .matchedGeometryEffect(id: "testId", in: namespace)
            Text("Details")
            Spacer()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

swift swiftui swiftui-navigationlink swiftui-animation swiftui-transition

10
推荐指数
1
解决办法
686
查看次数

SwiftUI 转换未发生

我是 SwiftUI 的新手,我正在尝试使用.transition,但由于某种原因没有发生转换。

你可以看到下面的代码:

看法

import SwiftUI

struct ContentView: View {
  @ObservedObject var viewModel = ViewModel()
  
  var body: some View {
    if self.viewModel.model.show {
      Text("Showing")
        .padding()
    } else {
      Text("Not Showing")
        .padding()
        .transition(.asymmetric(insertion: .scale, removal: .opacity))
    }
    
    Button {
      self.viewModel.show()
    } label: {
      Text("Tap to change")
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

视图模型

class ViewModel: ObservableObject {
  @Published private(set) var model = Model()
  
  func show() {
    self.model.toggleShow()
  }
}
Run Code Online (Sandbox Code Playgroud)

模型

struct Model {
  var show: Bool = true
  
  mutating func toggleShow() …
Run Code Online (Sandbox Code Playgroud)

ios swiftui swiftui-transition

4
推荐指数
1
解决办法
3983
查看次数