Swift subclass of the UISwitch which paints over the parent view with the color if switch is turned on and returns original superview background color if switch is off.



  • Swift 3.1
  • iOS 9.3+
  • Xcode 7.3+


Copy AnimatedSwitch.swiftto your project. Copy file if needed.


AnimatedSwitch adds nice material-design-like animation to your UISwitch.

AnimatedSwitch uses custom color for state on and superview background color for state off

When activated fills super view area with circle shape of specific color

How to create


let switch = AnimatedSwitch()

Storyboard and XIB

  1. Drap and drop a new UISwitch
  2. Set the class of the UISwitch to AnimatedSwitch
  3. Set color for the switch
  4. Set other parameters


Configurable properties (in code and in Interface Builder)

All regular UISwitch
  1. color animation color for on state (off state uses superview.backgroundColor). Default .clearColor()
  2. animationDuraton how long AnimatedSwitch will draw circle to fill the superview frame. Default 0.25
  3. startRadius circle radius that will be shown on screen without animation. Default 15 (to fit UISwitch size)
  4. borderColor border color for on state. Default .colorWhite
  5. showBorder should border appear around UISwitch for on state. Default true
  6. shape filling shape: .Round, .Star, .Dimond or .Cusom(UIBezierPath). Default .Round (NB! Can be set in code only)


Animation started

let switch = AnimatedSwitch()
switch.animationDidStart = { _ in 
  // do something

Animation Finished

switch.animationDidStop = { _ in 
  // do something