A button that squishes when pressed. As seen in the Clips app.

Inspired by the new Clips app record button, SquishButton is a UIButton subclass that implements the same design and behavior.



Use it as every other UIButton object and customize it to suit your needs. These are the public properties that SquishButton adds:

/// The number of pixels to scale the inner rectangle.
open var scaling = CGFloat(10)

/// The duration of the animation when the button is in the highlighted state.
open var animationDuration = 0.15

/// The color of the inner rectangle.
open var color = UIColor(red: 244.0/255.0, green: 51.0/255.0, blue: 50.0/255.0, alpha: 1.0)

/// The inset between the outer border and inner rectangle.
open var innerInset = CGFloat(5)


iOS 8.3 and Swift 3.2.

If you are using Swift 4, please use the swift4 branch.


SquishButton is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'SquishButton'

You can also use Carthage if you prefer. Add this line to your Cartfile.

github "BalestraPatrick/SquishButton"