MultiProgressView

by mac-gallagher

mac-gallagher / MultiProgressView

πŸ“Š An animatable view that depicts multiple progresses over time. Modeled after UIProgressView

511 Stars 32 Forks Last release: 11 months ago (v1.3.0) MIT License 125 Commits 18 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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.