UPGRADE YOUR SKILLS: Learn advanced Swift and SwiftUI on Hacking with Swift+! >>

How to make a nice looking long press effect?

Forums > Swift

Hi

when I'm in the google maps app for instance and I tap and hold a button I see a nice looking helo around the button. I mine I see an ugly square.

Can someone tell me what's the best practice to achieve the nice effect?

Thank you

Thomas

2      

Try this. You may want to play around with things but should give you a start EG make the opacity less change the 0.3 Make a struct (in a new file is what I do)

struct CircleOverlay: ButtonStyle {
    let color: Color
    let padding: CGFloat

    func makeBody(configuration: Configuration) -> some View {
        configuration.label
            .padding(padding)
            .overlay(
                color
                    .opacity(configuration.isPressed ? 0.2 : 0)
                    .clipShape(Circle())
            )
    }
}

then add this to View that you want the Button

Button {
    print("Pressed")
} label: {
    VStack {
        Image(systemName: "building.2")
        Text("Commute")
    }
}
.buttonStyle(.buttonStyle(CircleOverlay(color: .gray, padding: 30)))

and depanding on size and color of the circle you want you can just change this.

2      

BUILD THE ULTIMATE PORTFOLIO APP Most Swift tutorials help you solve one specific problem, but in my Ultimate Portfolio App series I show you how to get all the best practices into a single app: architecture, testing, performance, accessibility, localization, project organization, and so much more, all while building a SwiftUI app that works on iOS, macOS and watchOS.

Get it on Hacking with Swift+

Sponsor Hacking with Swift and reach the world's largest Swift community!

Archived topic

This topic has been closed due to inactivity, so you can't reply. Please create a new topic if you need to.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.