CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

BadgeSegmentControl 2.0

BadgeSegmentControl 2.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Sep 2017
SwiftSwift Version 4.0
SPMSupports SPM

Maintained by Florian Gabach.



  • By
  • Florian Gabach

FeaturesInstallationUsageCustomisationLicense

Sweet segment control with image, text and badge ! Hightly customisable.

Screen

Features

  • [x] Segment control with only text
  • [x] Segment control with image and text
  • [x] Segment control with only image
  • [x] Display badge

Todo (feel free to make PR)

  • [ ] Unit & UI Test

Requirements

  • Xcode 8
  • iOS 9.0+ target deployment
  • Swift 3 project
  • Dependency with SwiftBadge

Installation

  • To integrate BadgeSegmentControl into your Xcode project using CocoaPods, specify it in your Podfile :
pod "BadgeSegmentControl"
  • To integrate BadgeSegmentControl into your Xcode project using Carthage, specify it in your Cartfile :
github "terflogag/BadgeSegmentControl" 

Usage

  • Import the library :
import BadgeSegmentControl
  • Display the segment control programmatically :
let padding: CGFloat = 50
let mySegmentControl = BadgeSegmentControl(frame: CGRect(x: padding / 2,
                                                         y: self.view.frame.height - (padding * 2),
                                                         width: self.view.frame.width - padding,
                                                         height: padding))
self.mySegmentControl?.segmentAppearance = SegmentControlAppearance.appearance()

// Add segments
self.mySegmentControl?.addSegmentWithTitle("First")
self.mySegmentControl?.addSegmentWithTitle("Second")
self.mySegmentControl?.addTarget(self,
                                 action: #selector(selectSegmentInSegmentView(segmentView:)),
                                 for: .valueChanged)

// Set segment with index 0 as selected by default
self.mySegmentControl?.selectedSegmentIndex = 0

// Add to subview
if let segmentControl = self.mySegmentControl {
    self.view.addSubview(segmentControl)
}
  • Listen for change :
// Segment selector for .ValueChanged
func selectSegmentInSegmentView(segmentView: BadgeSegmentControl) {
    print("Select segment at index: \(segmentView.selectedSegmentIndex)")
}
  • From the storyboard :

Just set an UIView with BadgeSegmentControl class and export to an IBOutlet.

Customisation

import BadgeSegmentControl

func appearance() -> BadgeSegmentControlAppearence {
    let appearance = BadgeSegmentControlAppearence()

    // Segment color 
    appearance.segmentOnSelectionColour = UIColor.white
    appearance.segmentOffSelectionColour = UIColor(red:1.00, green:0.62, blue:0.22, alpha:1.00)

    // Title font 
    appearance.titleOnSelectionFont = UIFont.systemFont(ofSize: 14)
    appearance.titleOffSelectionFont = UIFont.systemFont(ofSize: 14)

    // Title color 
    appearance.titleOnSelectionColour = UIColor(red:1.00, green:0.62, blue:0.22, alpha:1.00)
    appearance.titleOffSelectionColour = UIColor.white

    // Vertical margin 
    appearance.contentVerticalMargin = 10.0

    // Border style
    appearance.borderColor = UIColor.white
    appearance.cornerRadius = 5.0
    appearance.borderWidth = 2.0

    // Divider style
    appearance.dividerWidth = 1.0
    appearance.dividerColour = UIColor(white: 0.95, alpha: 0.3)

    return appearance
}

self.mySegmentControl?.segmentAppearance = self.appearance()

Applications

Some application already use this segment control like :

What about yours ? If your application also use this library, feel free to contact me or make pull request on the README 😁

Author

Florian Gabach, [email protected]

License

OpenSourceController is available under the MIT license.

If your application use this segment control consider to add the licence in your Credits/About section. You can use this library to do it.