AIFlatSwitch A smooth, nice looking and IBDesignable flat design switch for iOS. Can be used instead of UISwitch. Inspired by Creativedash's Dribbble post here Requirements iOS 8.0+, tvOS 12.0+ Xcode 11.0+ Swift 5 Usage Creating the flat switch Either programmatically var flatSwitch = AIFlatSwitch ( frame : CGRectMake ( 0 , 0 , 50 , 50 ) ) Or in Interface Builder Methods To change its selected state: flatSwitch . isSelected = true IBInspectable or: flatSwitch . setSelected ( true , animated : true ) To listen to its state changes: @ IBAction func handleSwitchValueChange ( sender : AnyObject ) { if let flatSwitch = sender as? AIFlatSwitch { print ( flatSwitch . isSelected ) } } Animation observer callbacks: flatSwitch . selectionAnimationDidStart = { isSelected in print ( " New state: \( isSelected ) " ) } flatSwitch . selectionAnimationDidStop = { isSelected in print ( " State when animation stopped: \( isSelected ) " ) } Styling the switch: flatSwitch . lineWidth = 2.0 flatSwitch . strokeColor = UIColor . blue flatSwitch . trailStrokeColor = UIColor . red flatSwitch . backgroundLayerColor = UIColor . red flatSwitch . animatesOnTouch = false IBInspectable Contribution guidelines Make your changes in your branch Bump the pod version in AIFlatSwitch.podspec file (e.g. 1.0.1 to 1.0.2) Make sure the Example project compiles and works fine in the Simulator Find references to your source code changes in README.md and update them (e.g. method names, changed features) Create a pull request License AIFlatSwitch is released under the MIT license. See LICENSE for details. animated check button, checkmark