Recently I needed custom UI control for iOS that had rounded corners and a gradient background. To make the user experience as rich as possible I wanted the background of the control to flatten when the user tapped it. There were plenty of examples of gradient buttons and rounded corner views but nothing did exactly what I needed.
After a bit of experimentation I found the easiest solution was to add a gradient layer to a custom
UIControl and swap
it with a different layer when the control became highlighted.