相关疑难解决方法(0)

如何禁用 NavigationView 推送和弹出动画

鉴于这个简单NavigationView

struct ContentView : View {
    var body: some View {
        NavigationView {
            VStack {
                NavigationLink("Push Me", destination: Text("PUSHED VIEW"))
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

NavigationView当目标视图被推入/弹出堆栈时,有没有人找到禁用动画的方法?

从 iOS2.0 开始,这在 UIKit 中已经成为可能!我认为从框架中提出的要求并不过分。我在所有视图上尝试了各种修饰符(即NavigationView容器、目标视图NavigationLink、 等)

这些是我尝试过的一些修饰符:

.animation(nil)
Run Code Online (Sandbox Code Playgroud)
.transition(.identity)
Run Code Online (Sandbox Code Playgroud)
.transaction { t in t.disablesAnimations = true }
Run Code Online (Sandbox Code Playgroud)
.transaction { t in t.animation = nil }
Run Code Online (Sandbox Code Playgroud)

没有任何区别。我没有发现任何有用的东西EnvironmentValues:-(

我是否遗漏了一些非常明显的东西,或者功能还不存在?

swiftui swiftui-navigationlink swiftui-navigationview

20
推荐指数
3
解决办法
4263
查看次数

完全移动到其他视图并且不允许在 SwiftUI 中返回

我正在使用 SwiftUI 开发一个简单的 iOS 应用程序,其中包含两个视图:aLogInView()HomeView().

我想要的非常简单:当用户单击登录按钮时,LogInView()我希望应用程序隐藏LogInView()并显示HomeView()全屏,而不是像模态那样并且不允许用户返回。

这可以通过 Swift 和 UIKit 中的 Storyboards 轻松完成,有没有办法用 SwiftUI 做到这一点?

任何帮助表示赞赏。提前致谢。

我的代码:

登录查看

struct LogInView: View {
    var body: some View {
        VStack {
            Text("Welcome to Mamoot!")
                .font(.largeTitle)
                .fontWeight(.heavy)
            Text("We are glad to have you here.")
            Text("Please log in with your Mastodon or Twitter account to continue.")
                .multilineTextAlignment(.center)
                .lineLimit(4)
                .padding()
            Spacer()
            FloatingTextField(title: "Username", placeholder: "Username", width: 300, type: "Username")
            FloatingTextField(title: …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

6
推荐指数
1
解决办法
2236
查看次数

列表重新加载动画故障

动画故障

因此,我有一个列表,当用户填写搜索关键字时,该列表会发生变化,并且当没有结果时,所有单元格都会崩溃,并且以某种方式它们会飞到看起来丑陋的第一部分。我的代码中是否存在错误或者这是预期的 SwiftUI 行为?谢谢。

import SwiftUI

struct ContentView: View {

    @ObservedObject var viewModel = ViewModel(photoLibraryService: PhotoLibraryService.shared)

    var body: some View {
        NavigationView {
            List {
                Section {
                    TextField("Enter Album Name", text: $viewModel.searchText)
                }
                Section {
                    if viewModel.libraryAlbums.count > 0 {
                        ForEach(viewModel.libraryAlbums) { libraryAlbum -> Text in
                            let title = libraryAlbum.assetCollection.localizedTitle ?? "Album"
                            return Text(title)
                        }
                    }
                }
            }.listStyle(GroupedListStyle())
                .navigationBarTitle(
                    Text("Albums")
                ).navigationBarItems(trailing: Button("Add Album", action: {
                        PhotoLibraryService.shared.createAlbum(withTitle: "New Album \(Int.random(in: 1...100))")
                }))
        }.animation(.default)
    }
}
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui combine

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