我有一个 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(..)
并没有真正的帮助,但也许我的做法完全错误......
hoverEffectDisabled为我解决了这个问题。
NavigationLink(destination: Text("Item: \(item)")) {
ItemView(item: item)
}
.hoverEffectDisabled(true)