在 tvOS 上隐藏 SwiftUI NavigationLink(或 Button)的悬停焦点样式

问题描述 投票:0回答:1

我有一个 LazyVGrid,里面有一堆 NavigationLink。为了获得漂亮的外观和感觉,我想在它们上设置

.buttonStyle(.card)
,这样我就可以免费获得悬停和“闪烁”效果。

但缺点是它还为视图添加了浅色背景。这是一个简单的例子:

import SwiftUI

struct ContentView: View {
    let items = 1 ... 10

    var body: some View {
        NavigationView {
            LazyVGrid(columns: [GridItem(.adaptive(minimum: 200))], spacing: 16) {
                ForEach(items, id: \.self) { item in
                    NavigationLink(destination: Text("Item: \(item)")) {
                        ItemView(item: item)
                    }
                    .buttonStyle(.card)
                }
            }
        }
    }
}

struct ItemView: View {
    let item: Int

    var body: some View {
        VStack {
            Rectangle()
                .fill(.yellow)
                .strokeBorder(.blue, lineWidth: 8)
                .frame(height: 100)

            Text("Item \(item)")
        }
        .padding()
    }
}

#Preview {
    ContentView()
}

如何防止这种情况发生?使用

.hoverEffect(..)
.focusEffect(..)
并没有真正的帮助,但也许我的做法完全错误......

swift swiftui tvos
1个回答
0
投票

hoverEffectDisabled为我解决了这个问题。

NavigationLink(destination: Text("Item: \(item)")) {
    ItemView(item: item)
}
.hoverEffectDisabled(true)
© www.soinside.com 2019 - 2024. All rights reserved.