BetterSegmentedControl
BetterSegmentedControl is an easy to use, customizable replacement for UISegmentedControl and UISwitch written in Swift.
Features
- Can be used as a segmented control or switch
- Plethora of customizable options from colors to insets and radii
- Designable straight in Interface Builder
- Customizable behavior
- Error handling
Requirements
- iOS 8.0+
- Xcode 7.3+
Installation
CocoaPods
BetterSegmentedControl is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'BetterSegmentedControl', '~> 0.2'
Manually
If you prefer not to use CocoaPods, you can integrate BetterSegmentedControl into your project manually.
Usage
let control = BetterSegmentedControl(
frame: CGRect(x: 0.0, y: 100.0, width: view.bounds.width, height: 44.0),
titles: ["One", "Two", "Three"],
index: 1,
backgroundColor: UIColor(red:0.11, green:0.12, blue:0.13, alpha:1.00),
titleColor: .whiteColor(),
indicatorViewBackgroundColor: UIColor(red:0.55, green:0.26, blue:0.86, alpha:1.00),
selectedTitleColor: .blackColor())
control.titleFont = UIFont(name: "HelveticaNeue", size: 14.0)!
control.addTarget(self, action: #selector(ViewController.controlValueChanged(_:)), forControlEvents: .ValueChanged)
view.addSubview(control)
You can find different ways of using it (such as by designing it in a Storyboard file) in the example project. To run the example project, clone the repo, and run pod install
from the Example directory first.
Todos
- Make initializer failable if not enough titles are passed.
- Set titles via method that throws.
- Allow UIViews that implement a protocol to be used as options.
- Test everything!
-
Try to take over the world!Uh, what?
Contribution
Feel free fork, submit Pull Requests or send me your feedback and suggestions!
Author
George Marmaridis
- https://github.com/gmarm
- https://twitter.com/gmarmas
- https://www.linkedin.com/in/gmarm
- [email protected]
License
BetterSegmentedControl is available under the MIT license. See the LICENSE file for more info.
I'd greatly appreciate it if you drop me a line if you decide using it in one of your apps.