Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time



LUNSegmentedControl is control designed to let developers use segmented control with custom appearance, customizable interactive animation and other pretty things like gradient for states and shadow.

Supported OS & SDK Versions

  • Supported build target - iOS 8.0

ARC Compatibility

LUNSegmentedControl requires ARC.


To use the LUNSegmentedControl in your app, just drag the LUNSegmentedControl folder into your project.

Or you can use CocoaPods

pod 'LUNSegmentedControl'


Add a UIView and change its class to LUNSegmentedControl. Then you need to set its data source (either from the storyboard or programmaticaly). Implement the data source method that returns the segment count:

- (NSInteger)numberOfStatesInSegmentedControl:(LUNSegmentedControl *)segmentedControl;

Now implement one of the Data Source methods so you can set either a string, an attributed string or a view to be displayed in every segment.

- (NSString *)segmentedControl:(LUNSegmentedControl *)segmentedControl titleForStateAtIndex:(NSInteger)index;
- (NSAttributedString *)segmentedControl:(LUNSegmentedControl *)segmentedControl attributedTitleForStateAtIndex:(NSInteger)index;
- (UIView *)segmentedControl:(LUNSegmentedControl *)segmentedControl viewForStateAtIndex:(NSInteger)index;

If necessary, you can set a string, an attributed string or a view for the selected state for each segment with the help of following Data Source methods:

- (NSString *)segmentedControl:(LUNSegmentedControl *)segmentedControl titleForSelectedStateAtIndex:(NSInteger)index;
- (NSAttributedString *)segmentedControl:(LUNSegmentedControl *)segmentedControl attributedTitleForSelectedStateAtIndex:(NSInteger)index;
- (UIView *)segmentedControl:(LUNSegmentedControl *)segmentedControl viewForSelectedStateAtIndex:(NSInteger)index;

After that you can set the following parameters (either from the storyboard or programmaticaly) in order to change the way your control looks:

@property (nonatomic, assign) IBInspectable CGFloat cornerRadius;

In case you want to customize corner radius of the control.

@property (nonatomic, strong) IBInspectable UIColor *textColor;

Change that if you want to customize text color for titles of unselected segments.

@property (nonatomic, strong) IBInspectable UIColor *selectedStateTextColor;

It is used to change the text color of the title for the selected segment.

@property (nonatomic, strong) IBInspectable UIColor *selectorViewColor;

That’s how you change the color of selection itself.

In addition, you can set a color (or a number of colors to get a gradient) for each segment, left and right bounces with the help of the following data source methods:

- (NSArray <UIColor *> *)segmentedControl:(LUNSegmentedControl *)segmentedControl gradientColorsForStateAtIndex:(NSInteger)index;
- (NSArray <UIColor *> *)segmentedControl:(LUNSegmentedControl *)segmentedControl gradientColorsForBounce:(LUNSegmentedControlBounce)bounce;

If you want to recieve notifications about position changes, set control's delegate.

Check out the documentation to find description for more methods and properties you may use.


Usage is provided under the MIT License


Customizable segmented control with interactive animation.







No packages published