Contents

HoverPhase

The current hovering state and value of the pointer.

Declaration

@frozen enum HoverPhase

Overview

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)
            }
    }
}

Topics

Getting hover phases

See Also

Responding to hover events