代码之家  ›  专栏  ›  技术社区  ›  cesarcarlos

tvOS的SwiftUI按钮中的导航禁用动画

  •  0
  • cesarcarlos  · 技术社区  · 3 月前

    我第一次在SwiftUI中创建tvOS应用程序。我在这方面很新。

    我有一排按钮,工作正常。每当我改变焦点时,焦点所在的项目的大小都会增加。

    var body: some View {
        NavigationView {
                    ScrollView(.horizontal) {
                        LazyHStack(spacing: 50) {
                            ForEach(sections[0].items) { item in
                                Button {} label: {
                                    Image(systemName: "photo")
                                        .resizable()
                                        .frame(width: 300, height: 170)
                                    Text(item.title)
                                }
                                .buttonStyle(.borderless)
                                
                            }
                        }
                    }
                    .scrollClipDisabled()
                    .buttonStyle(.borderless)
                }
    
    }
    

    但是,如果我尝试添加这样的导航链接:

    NavigationLink(destination: VideoDetailView(mediaItem: item)) {
                                            Button...
                                        }
    

    焦点上的动画丢失。

    我做错了什么?我如何保持按钮的焦点动画并将其带到新屏幕?

    1 回复  |  直到 3 月前
        1
  •  0
  •   Benzy Neez    3 月前

    A. NavigationLink 是一种按钮,你不需要用它来包裹 Button .修饰语 .buttonStyle 可以应用于 导航链接 我也是。

    也, NavigationView 已弃用,请考虑使用 NavigationStack 相反。

    NavigationStack {
        ScrollView(.horizontal) {
            LazyHStack(spacing: 50) {
                ForEach(sections[0].items) { item in
                    NavigationLink {
                        VideoDetailView(mediaItem: item)
                    } label: {
                        Image(systemName: "photo")
                            .resizable()
                            .frame(width: 300, height: 170)
                        Text(item.title)
                    }
                    .buttonStyle(.borderless)
                }
            }
        }
        .scrollClipDisabled()
    }