TimOliver / TOSegmentedControl

A segmented control in the style of iOS 13 compatible with previous versions of iOS.
MIT License
197 stars 24 forks source link
cocoapods ios objective-c segmented-control uikit

TOSegmentedControl

TOSegmentedControl

CI Version Carthage compatible GitHub license Platform PayPal Twitch

As part of the visual improvements featured in iOS 13, UISegmentedControl was completely redesigned, featuring a much rounder, cleaner, and slightly more skeuomorphic appearance.

TOSegmentedControl is a subclass of of UIControl that completely re-implements the look and feel of the new UISegmentedControl component, allowing developers to adopt its look even in previous versions of iOS they support.

Features

Sample Code

TOSegmentedControl has been written to follow the interface of UISegmentedControl as closely as possible. This should make it very intuitive to work with.

Swift

In Swift, the class is renamed to SegmentedControl. Creating a new instance is very similar to UISegmentedControl.


// Create a new instance
let segmentedControl = SegmentedControl(items: ["First", "Second", "Third"])

// Add a closure that will be called each time the selected segment changes
segmentedControlsegmentTappedHandler = { segmentIndex, reversed in
   print("Segment \(segmentIndex) was tapped!")
}

// Add a new item to the end
segmentedControl.addSegment(withTitle: "Fourth")

// Insert a new item at the beginning
segmentedControl.insertSegment(withTitle: "Zero", at: 0)

// Remove all segments
segmentedControl.removeAllSegments()

Objective-C


NSArray *items = @[@"First", @"Second", @"Third"];

// Create a new instance
TOSegmentedControl *segmentedControl = [[TOSegmentedControl alloc] initWithItems:items]];

// Add a block that will be called each time the selected segment changes
segmentedControl.segmentTappedHandler = ^(NSInteger index, BOOL reversed) {
    NSLog(@"Segment %d was tapped!", index);
};

// Add a new item to the end
[segmentedControl addSegmentWithTitle:@"Fourth"];

// Insert a new item at the beginning
[segmentedControl insertSegmentWithTitle:@"Zero" atIndex:0];

// Remove all segments
[segmentedControl removeAllSegments];

System Requirements

iOS 9.0 or above

Installation

CocoaPods Add the following to your Podfile: ``` ruby pod 'TOSegmentedControl' ```
Carthage 1. Add the following to your Cartfile: ``` github "TimOliver/TOSegmentedControl" ``` 2. Run `carthage update` 3. From the `Carthage/Build` folder, import the `TOSegmentedControl.framework`. 4. Follow the remaining steps on [Getting Started with Carthage](https://github.com/Carthage/Carthage#getting-started) to finish integrating the framework.
Manual Installation All of the necessary source files located in the `TOSegmentedControl` folder. Simply drag that folder into your Xcode project.

Credits

TOSegmentedControl was created by Tim Oliver as a component for iComics.

iOS device mockup by Pixeden.

License

TOSegmentedControl is available under the MIT license. Please see the LICENSE file for more information. analytics