Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/valentinjahanmanesh/loady
fully customizable loading button with 9 different styles
https://github.com/valentinjahanmanesh/loady
Last synced: 3 months ago
JSON representation
fully customizable loading button with 9 different styles
- Host: GitHub
- URL: https://github.com/valentinjahanmanesh/loady
- Owner: valentinjahanmanesh
- License: mit
- Created: 2019-02-04T06:49:04.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-11-14T19:17:49.000Z (almost 2 years ago)
- Last Synced: 2024-05-22T06:07:16.798Z (6 months ago)
- Language: Swift
- Homepage:
- Size: 13.5 MB
- Stars: 848
- Watchers: 13
- Forks: 60
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - Loady - This is a small library to show loading and indicator in `UIButton`, with fully customizable styles. there are 6 different styles, you can set the colors from interface builder or programmatically. [•](https://raw.githubusercontent.com/farshadjahanmanesh/loady/master/loady/examples/_gif.gif) (Content / Button)
README
[![Version](https://img.shields.io/cocoapods/v/Whisper.svg?style=flat)](http://cocoadocs.org/docsets/Whisper)
[![License](https://img.shields.io/cocoapods/l/Whisper.svg?style=flat)](http://cocoadocs.org/docsets/Whisper)
[![Platform](https://img.shields.io/cocoapods/p/Whisper.svg?style=flat)](http://cocoadocs.org/docsets/Whisper)
![Swift](https://img.shields.io/badge/%20in-swift%204.4-orange.svg)# Loady
this is a small library to show loading and indicator in UIButton, with fully customizable styles. there are 6 different styles, you can set the colors from interface builder or programmatically.## Todo
- [x] animation style : like appstore download button
- [x] animation style : 4 phases Animation(normal, loading, success, error)
- [x] animation style : like android
- [x] animation style : downloading
- [x] extendable to accept new animations
- [ ] animation style : like telegram sharing
- [ ] Carthage Support![TOP_LINE](examples/_gif.gif)
## Requirements
loady minimum target requirement is iOS 10.0## Installation
loady is available through [Swift Package Manager](https://www.swift.org/package-manager/) or [Cocoapods](http://cocoapods.org)### Swift Package Manager (Recommended)
```
dependencies: [
.package(url: "https://github.com/farshadjahanmanesh/loady.git", .upToNextMajor(from: "1.0.8"))
]
```### Cocoapods
```swift
pod "loady"
```### Manual
simply copy the [Source Code](https://github.com/farshadjahanmanesh/loady/tree/master/loady/LoadingButton) into your project, take a look at the example project for more info## Configs
## Setup programmatically :
```swift// sets animation type
self.loadyButton.setAnimation(LoadyAnimationType.backgroundHighlighter())
// starts loading animation
self.loadyButton?.startLoading()
// some animations have filling background, or change the circle stroke, this sets the filling percent, number is something between 0 to 100
loadyButton.update(percent: percent)
```___
### 4 Phases Animation :
```swift
// setup colors, titles and images
self.fourPhases?.loadingColor = UIColor(red:0.38, green:0.66, blue:0.09, alpha:1.0)
self.fourPhases.loadingColor = UIColor(red:0.38, green:0.66, blue:0.09, alpha:1.0)
self.fourPhases.setPhases(phases: .init(
normalPhase:
(title: "Lock", image: UIImage(named: "unlocked"), background: UIColor(red:0.00, green:0.49, blue:0.90, alpha:1.0)), loadingPhase:
(title: "Waiting...", image: nil, background: UIColor(red:0.17, green:0.24, blue:0.31, alpha:1.0)),
successPhase:
(title: "Activated", image: UIImage(named: "locked"), background: UIColor(red:0.15, green:0.68, blue:0.38, alpha:1.0)), errorPhase:
(title: "Error", image: UIImage(named: "unlocked"), background: UIColor(red:0.64, green:0.00, blue:0.15, alpha:1.0))
)
)
// then later in your code after user click on the button just call, this line take the button to loading phase,
self.fourPhasesLoadyButton?.startLoading()// in loading phase three different stage is available, you can cancel the loading by calling
self.fourPhasesLoadyButton?.normalPhase()
// you can take the button to success phase by calling
self.fourPhasesLoadyButton?.successPhase()
// you can take the button to error phase by calling
self.fourPhasesLoadyButton?.errorPhase()
```| Loading To Normal | Loading To Success | Loading To Error |
| ------------- | ------------- | ------------- |
| | | |___
### Downloading Animation :
```swift
// setup download button details
self.downloadingLoadyButton.setAnimation(LoadyAnimationType.downloading(with: .init(
downloadingLabel: (title: "Copying Data...", font: UIFont.boldSystemFont(ofSize: 18), textColor : UIColor(red:0, green:0.71, blue:0.8, alpha:1)),
percentageLabel: (font: UIFont.boldSystemFont(ofSize: 14), textColor : UIColor(red:0, green:0.71, blue:0.8, alpha:1)),
downloadedLabel: (title: "Completed.", font: UIFont.boldSystemFont(ofSize: 20), textColor : UIColor(red:0, green:0.71, blue:0.8, alpha:1))
)
))```
___
## Setup in interface builder
| Set class | change attributes |
| ------------- | ------------- |
| | |___
## BONUS - [NVActivityIndicatorView](https://github.com/ninjaprox/NVActivityIndicatorView)
if you are a fan of NVActivityIndicatorView, its very easy to integrate it with loady, you can replace our default iOS indicatorView with NVActivityIndicatorView <3
now we have a new property which accepts LoadyActivityIndicator Protocol, just set it with your favorite activity indicator view like below
```(swift)
// first conform to the LoadyActivityIndicator protocol like this
extension NVActivityIndicatorView : LoadyActivityIndicator {
}// then replace loady default activity indicator with yours
let nv = NVActivityIndicatorView(frame: .zero)
nv.type = .circleStrokeSpin
nv.color = .red
nv.padding = 12
self.loadyButton?.activiyIndicator = nv
```
| | |## troubleshoot
1. Unable to find a specification for `loady`if you get some error like this with cocoapod, just update your pod with this commands in your terminal
```
> [!] Unable to find a specification for `loady`
$ pod repo update
$ pod install
```