{"id":13822951,"url":"https://github.com/mac-gallagher/MultiProgressView","last_synced_at":"2025-05-16T17:32:52.120Z","repository":{"id":37319047,"uuid":"138664517","full_name":"mac-gallagher/MultiProgressView","owner":"mac-gallagher","description":"📊 An animatable view that depicts multiple progresses over time. Modeled after UIProgressView","archived":false,"fork":false,"pushed_at":"2021-03-27T14:41:12.000Z","size":2076,"stargazers_count":1010,"open_issues_count":6,"forks_count":63,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-05-12T04:47:51.805Z","etag":null,"topics":["carthage","cocoapods","ios","progress","progress-bar","progress-view","progressbar","progressview","swift","ui-components"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mac-gallagher.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-26T00:36:00.000Z","updated_at":"2025-05-10T10:55:35.000Z","dependencies_parsed_at":"2022-08-21T04:50:39.337Z","dependency_job_id":null,"html_url":"https://github.com/mac-gallagher/MultiProgressView","commit_stats":null,"previous_names":["mac-gallagher/mgsegmentedprogressbar"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mac-gallagher%2FMultiProgressView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mac-gallagher%2FMultiProgressView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mac-gallagher%2FMultiProgressView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mac-gallagher%2FMultiProgressView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mac-gallagher","download_url":"https://codeload.github.com/mac-gallagher/MultiProgressView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254576751,"owners_count":22094449,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["carthage","cocoapods","ios","progress","progress-bar","progress-view","progressbar","progressview","swift","ui-components"],"created_at":"2024-08-04T08:02:26.233Z","updated_at":"2025-05-16T17:32:49.469Z","avatar_url":"https://github.com/mac-gallagher.png","language":"Swift","funding_links":[],"categories":["Swift","OOM-Leaks-Crash"],"sub_categories":["WebView-ProgressBar"],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/header.png\"\u003e\n\n\u003ca href=\"https://travis-ci.org/mac-gallagher/MultiProgressView\"\u003e\u003cimg alt=\"Build Status\" src=\"https://travis-ci.com/mac-gallagher/MultiProgressView.svg?branch=master\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://cocoapods.org/pods/MultiProgressView\"\u003e\u003cimg alt=\"Platform\" src=\"https://img.shields.io/cocoapods/p/MultiProgressView.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://developer.apple.com/swift\"\u003e\u003cimg alt=\"Swift 5\" src=\"https://img.shields.io/badge/language-Swift_5-orange.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/mac-gallagher/MultiProgressView\"\u003e\u003cimg alt=\"Code Coverage\" src=\"https://codecov.io/gh/mac-gallagher/MultiProgressView/branch/master/graph/badge.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://cocoapods.org/pods/MultiProgressView\"\u003e\u003cimg alt=\"CocoaPods\" src=\"https://img.shields.io/cocoapods/v/MultiProgressView.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/Carthage/Carthage\"\u003e\u003cimg alt=\"Carthage\" src=\"https://img.shields.io/badge/carthage-compatible-4BC51D.svg?style=flat)\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://swift.org/package-manager\"\u003e\u003cimg alt=\"Swift Package Manager\" src=\"https://img.shields.io/badge/swift pm-compatible-yellow.svg\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://cocoapods.org/pods/MultiProgressView\"\u003e\u003cimg alt=\"Platform\" src=\"https://img.shields.io/cocoapods/l/MultiProgressView.svg\"/\u003e\u003c/a\u003e\n\n📊 **MultiProgressView** is an animatable view that depicts multiple progresses over time. Modeled after [UIProgressView](https://developer.apple.com/documentation/uikit/uiprogressview).\n\n---\n\n## Examples\n\nTo run the example project, clone the repo and run the `MultiProgressViewExample` target.\n\n\u003cp align=\"left\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/example2.gif\" width=\"450\"\u003e\n\u003c/p\u003e\n\u003cp align=\"left\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/example1.gif\" width=\"550\"\u003e\n\u003c/p\u003e\n\n## Basic Usage\n\n### Programmatic\n1. Add a `MultiProgressView` to your view hierarchy:\n\n    ```swift\n    let progressView = MultiProgressView()\n    view.addSubview(progressView)\n    ```\n    \n2. Conform your class to the `MultiProgressViewDataSource` protocol and set your progress view's `dataSource`:\n\n    ```swift\n    func numberOfSections(in progressView: MultiProgressView) -\u003e Int\n    func progressView(_ progressView: MultiProgressView, viewForSection section: Int) -\u003e ProgressViewSection\n    ```\n    \n    ```swift\n    progressView.dataSource = self\n    ```\n3. Call `setProgress(section:to:)` to update your view's progress:\n\n    ```swift\n    progressView.setProgress(section: 0, to: 0.4) //animatable\n    ```\n\n### Storyboards\n\n1. Drag a `UIView` onto your view controller and set the view's class to `MultiProgressView` in the *Identity Inspector*:\n\n   ![IdentityInspector](https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/storyboard_identity_inspector.gif)\n\n3. Connect your progress view to your view controller with an `IBOutlet`:\n\n   ![IBOutlet](https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/storyboard_ib_outlet.gif)\n\n4. Conform your view controller to the `MultiProgressViewDataSource` protocol and implement the required methods:\n \n   ```swift\n    func numberOfSections(in progressView: MultiProgressView) -\u003e Int\n    func progressView(_ progressView: MultiProgressView, viewForSection section: Int) -\u003e ProgressViewSection\n    ```\n     \n5. Set your view controller as the progress view's `dataSource`:\n   \n   ![DataSource](https://raw.githubusercontent.com/mac-gallagher/MultiProgressView/master/Images/storyboard_data_source.gif)\n\n6. Call `setProgress(section:to:)` to update your view's progress:\n\n    ```swift\n    progressView.setProgress(section: 0, to: 0.4) //animatable\n    ```\n\n## Customization\n\n### MultiProgressView\nEach `MultiProgressView` exposes the variables listed below. If using storyboards, many of these properties can be customized directly in the view's *Attribute Inspector*.\n\n\n```swift\nvar cornerRadius: CGFloat = 0\nvar borderWidth: CGFloat = 0\nvar borderColor: UIColor? = .black\nvar lineCap: LineCapType = .square \n\nvar trackInset: CGFloat = 0\nvar trackBackgroundColor: UIColor? = .clear\nvar trackBorderColor: UIColor? = .black\nvar trackBorderWidth: CGFloat = 0\n\nvar trackImageView: UIImageView\n\nvar trackTitleLabel: UILabel\nvar trackTitleEdgeInsets: UIEdgeInsets = .zero\nvar trackTitleAlignment: AlignmentType = .center\n```\n\n**Note**: To apply a corner radius (using `layer.cornerRadius` or the `cornerRadius` variable) the `lineCap` type must be set to `.round`.\n\n\n### ProgressViewSection\nEach `ProgressViewSection` exposes the following variables:\n\n```swift\nvar imageView: UIImageView\nvar titleLabel: UILabel\nvar titleEdgeInsets: UIEdgeInsets = .zero\nvar titleAlignment: AlignmentType = .center\n```\n\n## Installation\n\n### CocoaPods\nMultiProgressView is available through [CocoaPods](\u003chttps://cocoapods.org/\u003e). To install it, simply add the following line to your Podfile:\n\n\tpod 'MultiProgressView'\n\n### Carthage\n\nMultiProgressView is available through [Carthage](\u003chttps://github.com/Carthage/Carthage\u003e). To install it, simply add the following line to your Cartfile:\n\n\tgithub \"mac-gallagher/MultiProgressView\"\n\n### Swift Package Manager\nMultiProgressView is available through [Swift PM](\u003chttps://swift.org/package-manager/\u003e). To install it, simply add the package as a dependency in `Package.swift`:\n\n```swift\ndependencies: [\n  .package(url: \"https://github.com/mac-gallagher/MultiProgressView.git\", from: \"1.2.0\"),\n]\n```\n\n### Manual\nDownload and drop the `MultiProgressView` directory into your project.\n\n## Requirements\n* iOS 9.0+\n* Xcode 10.2+\n* Swift 5.0+\n\n## Apps Using MultiProgressView\nWe love to hear about apps that use MultiProgressView - feel free to submit a pull request and share yours here!\n\n---\n\n\u003cp align=\"center\"\u003e\n Made with ❤️ by \u003ca href=\"https://github.com/mac-gallagher\"\u003eMac Gallagher\u003c/a\u003e\n \u003c/br\u003e\n(Header design by \u003ca href=\"mailto:mghani@uwm.edu\"\u003eMazen Ghani\u003c/a\u003e)\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmac-gallagher%2FMultiProgressView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmac-gallagher%2FMultiProgressView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmac-gallagher%2FMultiProgressView/lists"}