π An animatable view that depicts multiple progresses over time. Modeled after UIProgressView
Swift
1,000
125 commits
updated Mar 27, 2021
π MultiProgressView is an animatable view that depicts multiple progresses over time. Modeled after UIProgressView.
To run the example project, clone the repo and run the MultiProgressViewExample target.
Add a MultiProgressView to your view hierarchy:
let progressView = MultiProgressView()
view.addSubview(progressView)
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
Call setProgress(section:to:) to update your view's progress:
progressView.setProgress(section: 0, to: 0.4) //animatable
Drag a UIView onto your view controller and set the view's class to MultiProgressView in the Identity Inspector:

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

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
Set your view controller as the progress view's dataSource:

Call setProgress(section:to:) to update your view's progress:
progressView.setProgress(section: 0, to: 0.4) //animatable
Each MultiProgressView exposes the variables listed below. If using storyboards, many of these properties can be customized directly in the view's Attribute Inspector.
var cornerRadius: CGFloat = 0
var borderWidth: CGFloat = 0
var borderColor: UIColor? = .black
var lineCap: LineCapType = .square
var trackInset: CGFloat = 0
var trackBackgroundColor: UIColor? = .clear
var trackBorderColor: UIColor? = .black
var trackBorderWidth: CGFloat = 0
var trackImageView: UIImageView
var trackTitleLabel: UILabel
var trackTitleEdgeInsets: UIEdgeInsets = .zero
var trackTitleAlignment: AlignmentType = .center
Note: To apply a corner radius (using layer.cornerRadius or the cornerRadius variable) the lineCap type must be set to .round.
Each ProgressViewSection exposes the following variables:
var imageView: UIImageView
var titleLabel: UILabel
var titleEdgeInsets: UIEdgeInsets = .zero
var titleAlignment: AlignmentType = .center
MultiProgressView is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'MultiProgressView'
MultiProgressView is available through Carthage. To install it, simply add the following line to your Cartfile:
github "mac-gallagher/MultiProgressView"
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"),
]
Download and drop the MultiProgressView directory into your project.
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)
495 followers Β· starred Feb 2019
109 followers Β· starred Feb 2019
524 followers Β· starred Jan 2021
95 followers Β· starred Feb 2021
π An animatable view that depicts multiple progresses over time. Modeled after UIProgressView
Swift
1,000
125 commits
updated Mar 27, 2021
π MultiProgressView is an animatable view that depicts multiple progresses over time. Modeled after UIProgressView.
To run the example project, clone the repo and run the MultiProgressViewExample target.
Add a MultiProgressView to your view hierarchy:
let progressView = MultiProgressView()
view.addSubview(progressView)
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
Call setProgress(section:to:) to update your view's progress:
progressView.setProgress(section: 0, to: 0.4) //animatable
Drag a UIView onto your view controller and set the view's class to MultiProgressView in the Identity Inspector:

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

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
Set your view controller as the progress view's dataSource:

Call setProgress(section:to:) to update your view's progress:
progressView.setProgress(section: 0, to: 0.4) //animatable
Each MultiProgressView exposes the variables listed below. If using storyboards, many of these properties can be customized directly in the view's Attribute Inspector.
var cornerRadius: CGFloat = 0
var borderWidth: CGFloat = 0
var borderColor: UIColor? = .black
var lineCap: LineCapType = .square
var trackInset: CGFloat = 0
var trackBackgroundColor: UIColor? = .clear
var trackBorderColor: UIColor? = .black
var trackBorderWidth: CGFloat = 0
var trackImageView: UIImageView
var trackTitleLabel: UILabel
var trackTitleEdgeInsets: UIEdgeInsets = .zero
var trackTitleAlignment: AlignmentType = .center
Note: To apply a corner radius (using layer.cornerRadius or the cornerRadius variable) the lineCap type must be set to .round.
Each ProgressViewSection exposes the following variables:
var imageView: UIImageView
var titleLabel: UILabel
var titleEdgeInsets: UIEdgeInsets = .zero
var titleAlignment: AlignmentType = .center
MultiProgressView is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'MultiProgressView'
MultiProgressView is available through Carthage. To install it, simply add the following line to your Cartfile:
github "mac-gallagher/MultiProgressView"
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"),
]
Download and drop the MultiProgressView directory into your project.
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)
495 followers Β· starred Feb 2019
109 followers Β· starred Feb 2019
524 followers Β· starred Jan 2021
95 followers Β· starred Feb 2021