在 SwiftUI
中,任何连接了鼠标的 macOS
应用程序或任何 iPadOS
应用程序都可以检测到用户何时将其鼠标悬停在视图上,并做出适当的响应。
您将要使用两个修饰符:onHover()
和 hoverEffect()
。 这些中的第一个允许您跟踪指针当前是否悬停在视图上方,并传递一个反映该状态的布尔值。 例如,根据指针是否悬停在文本上方,这将使某些文本变为红色或绿色:
struct ContentView: View {
@State private var overText = false
var body: some View {
Text("Hello, World!")
.foregroundColor(overText ? .green : .red)
.onHover { over in
overText = over
}
}
}
hoverEffect()
修饰符允许您选择以下三种方式之一:系统在发生悬停时突出显示视图:.highlight
将指针转换为视图形状,同时创建柔和的方向效果,.lift
将指针转换为形状 同时放大视图并在其后放置柔和阴影,.automatic
会选择它认为最合适的突出显示效果。
请注意,如果仅应用不带任何参数的 hoverEffect()
修饰符,则 .automatic
是默认设置,但它不仅仅是在 .highlight
和 .lift
之间进行选择-这是完全不同的效果,并且不会转换指针以匹配 您的视图的形状。
要尝试一下,下面的一些代码在屏幕上放置了可轻敲的文本标签,使其具有 .lift
悬停效果,以使其清晰可辨:
struct ContentView: View {
var body: some View {
Text("Tap me!")
.font(.largeTitle)
.hoverEffect(.lift)
.onTapGesture {
print("Text tapped")
}
}
}
提示:要在 iPadOS
模拟器上进行尝试,请转到 I/O
菜单,然后选择 Input
> Send Cursor to Device
。