HoverPhase
The current hovering state and value of the pointer.
Declaration
@frozen enum HoverPhaseOverview
When you use the onContinuousHover(coordinateSpace:perform:) modifier, you can handle the hovering state using the action closure. SwiftUI calls the closure with a phase value to indicate the current hovering state. The following example updates hoverLocation and isHovering based on the phase provided to the closure:
@State private var hoverLocation: CGPoint = .zero
@State private var isHovering = false
var body: some View {
VStack {
Color.red
.frame(width: 400, height: 400)
.onContinuousHover { phase in
switch phase {
case .active(let location):
hoverLocation = location
isHovering = true
case .ended:
isHovering = false
}
}
.overlay {
Rectangle()
.frame(width: 50, height: 50)
.foregroundColor(isHovering ? .green : .blue)
.offset(x: hoverLocation.x, y: hoverLocation.y)
}
}
}