onHover 是 SwiftUI 提供的用于 macOS 的修饰符,用于响应鼠标悬停事件。
基本语法
.onHover { isHovering in
// 当鼠标进入视图区域时 isHovering = true
// 当鼠标离开视图区域时 isHovering = false
}
使用示例
1、鼠标悬浮变色
struct HoverText: View {
@State private var hovering = false
var body: some View {
Text("悬停试试")
.padding()
.background(hovering ? Color.blue : Color.gray)
.cornerRadius(8)
.onHover { inside in
hovering = inside
}
}
}
当鼠标放到对应的图片上时,设置悬浮索引并显示放大按钮。

注意事项
1、仅支持 macOS:onHover 只在 macOS 上有效,iOS 上不响应。
2、View 必须有实际尺寸:如果 View 太小或透明,鼠标可能检测不到。
3、常配合 ZStack 使用:用于悬浮时显示叠加图标或信息(如 +、按钮、遮罩等)。
4、配合overlay:onHover需要在overlay后面修饰,否则会导致悬浮判断异常,出现闪烁的情况。
总结
onHover鼠标悬停,常用于图片/文件列表悬浮时,显示操作图标,鼠标经过变色、变亮等场景。