Need help with MultiProgressView?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

mac-gallagher
623 Stars 40 Forks MIT License 125 Commits 5 Opened issues

Description

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

Services available

!
?

Need anything else?

Contributors list

# 62,422
Swift
Objecti...
progres...
progres...
101 commits

Build Status Platform Swift 5 Code Coverage CocoaPods Carthage Swift Package Manager Platform

📊 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:
    let progressView = 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

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

IBOutlet

  1. 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
    ```

  1. Set your view controller as the progress view's dataSource:

    DataSource

  2. 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.

```swift 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
.

ProgressViewSection

Each

ProgressViewSection
exposes the following variables:
var imageView: UIImageView
var titleLabel: UILabel
var titleEdgeInsets: UIEdgeInsets = .zero
var titleAlignment: 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)

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.