Skip to content

Repository files navigation

Build StatusPlatformSwift 5Code CoverageCocoaPodsCarthageSwift Package ManagerPlatform

📊 MultiProgressView is an animatable view that depicts multiple progresses over time. Modeled after UIProgressView.


Examples

To run the example project, clone the repo and run the MultiProgressViewExample target.

Basic Usage

Programmatic

  1. Add a MultiProgressView to your view hierarchy:

    letprogressView=MultiProgressView()
    view.addSubview(progressView)
  2. Conform your class to the MultiProgressViewDataSource protocol and set your progress view's dataSource:

    func numberOfSections(in progressView:MultiProgressView)-> Int
    func progressView(_ progressView:MultiProgressView, viewForSection section:Int)->ProgressViewSection
    progressView.dataSource =self
  3. Call setProgress(section:to:) to update your view's progress:

    progressView.setProgress(section:0, to:0.4) //animatable

Storyboards

  1. Drag a UIView onto your view controller and set the view's class to MultiProgressView in the Identity Inspector:

    IdentityInspector

  2. Connect your progress view to your view controller with an IBOutlet:

    IBOutlet

  3. Conform your view controller to the MultiProgressViewDataSource protocol and implement the required methods:

    func numberOfSections(in progressView:MultiProgressView)-> Int
    func progressView(_ progressView:MultiProgressView, viewForSection section:Int)->ProgressViewSection
  4. Set your view controller as the progress view's dataSource:

    DataSource

  5. Call setProgress(section:to:) to update your view's progress:

    progressView.setProgress(section:0, to:0.4) //animatable

Customization

MultiProgressView

Each MultiProgressView exposes the variables listed below. If using storyboards, many of these properties can be customized directly in the view's Attribute Inspector.

varcornerRadius:CGFloat=0varborderWidth:CGFloat=0varborderColor:UIColor?=.black
varlineCap:LineCapType=.square vartrackInset:CGFloat=0vartrackBackgroundColor:UIColor?=.clear
vartrackBorderColor:UIColor?=.black
vartrackBorderWidth:CGFloat=0vartrackImageView:UIImageViewvartrackTitleLabel:UILabelvartrackTitleEdgeInsets:UIEdgeInsets=.zero
vartrackTitleAlignment:AlignmentType=.center

Note: To apply a corner radius (using layer.cornerRadius or the cornerRadius variable) the lineCap type must be set to .round.

ProgressViewSection

Each ProgressViewSection exposes the following variables:

varimageView:UIImageViewvartitleLabel:UILabelvartitleEdgeInsets:UIEdgeInsets=.zero
vartitleAlignment:AlignmentType=.center

Installation

CocoaPods

MultiProgressView is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'MultiProgressView'

Carthage

MultiProgressView is available through Carthage. To install it, simply add the following line to your Cartfile:

github "mac-gallagher/MultiProgressView"

Swift Package Manager

MultiProgressView is available through Swift PM. To install it, simply add the package as a dependency in Package.swift:

dependencies:[.package(url:"https://github.com/mac-gallagher/MultiProgressView.git", from:"1.2.0"),]

Manual

Download and drop the MultiProgressView directory into your project.

Requirements

  • iOS 9.0+
  • Xcode 10.2+
  • Swift 5.0+

Apps Using MultiProgressView

We love to hear about apps that use MultiProgressView - feel free to submit a pull request and share yours here!


Made with ❤️ by Mac Gallagher
(Header design by Mazen Ghani)

About

📊 An animatable view that depicts multiple progresses over time. Modeled after UIProgressView

Topics

Resources

Contributing

Stars

1.0k stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages