Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mac-gallagher/MultiProgressView

📊 An animatable view that depicts multiple progresses over time. Modeled after UIProgressView
https://github.com/mac-gallagher/MultiProgressView

carthage cocoapods ios progress progress-bar progress-view progressbar progressview swift ui-components

Last synced: 3 months ago
JSON representation

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

Awesome Lists containing this project

README

        

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](https://developer.apple.com/documentation/uikit/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:

```swift
let progressView = MultiProgressView()
view.addSubview(progressView)
```

2. Conform your class to the `MultiProgressViewDataSource` protocol and set your progress view's `dataSource`:

```swift
func numberOfSections(in progressView: MultiProgressView) -> Int
func progressView(_ progressView: MultiProgressView, viewForSection section: Int) -> ProgressViewSection
```

```swift
progressView.dataSource = self
```
3. Call `setProgress(section:to:)` to update your view's progress:

```swift
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](https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/storyboard_identity_inspector.gif)

3. Connect your progress view to your view controller with an `IBOutlet`:

![IBOutlet](https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/storyboard_ib_outlet.gif)

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

```swift
func numberOfSections(in progressView: MultiProgressView) -> Int
func progressView(_ progressView: MultiProgressView, viewForSection section: Int) -> ProgressViewSection
```

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

![DataSource](https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/storyboard_data_source.gif)

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

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

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

```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)