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
 