SwiftUI macOS .onHover 修辞符的使用

7 min read

在SwiftUI中,可以使用.onHover修辞符来捕捉鼠标悬停事件。

例如,以下代码将创建一个圆形视图,当鼠标悬停在该视图上时,它将变为红色:

Circle()
    .fill(Color.blue)
    .frame(width: 100, height: 100)
    .onHover { isHovered in
        if isHovered {
            self.circleColor = Color.red
        } else {
            self.circleColor = Color.blue
        }
    }
    .foregroundColor(circleColor)

在此示例中,onHover修饰符获取一个布尔值isHovered,表示鼠标是否在视图上悬停。根据此值,我们可以相应地更新颜色。在这种情况下,我们将圆圈颜色设置为红色,当鼠标悬停在上面时,否则将颜色设置为蓝色。也要注意,我们在最后的foregroundColor修辞符中指定了颜色,这是由于颜色在onHover修辞符引发状态更改后需要重新绘制视图。