JGProgressHUD
---------------
An elegant and simple progress HUD for iOS and tvOS.
Overview
---------------
__The ultimate progress HUD for iOS and tvOS is here: JGProgressHUD!__
- Plug and play: Simple integration, easy to use, few lines of code required.
- Easily customizable (custom animations, indicator views and more).
- Uses `UIVisualEffectView` and `UIMotionEffect` for a native look.
- Uses AutoLayout to provide a fully dynamic layout.
- Detects and repositions when keyboard appears/disappears.
- Well documented and maintained.
- Voice Over/`UIAccessibility` support.
- Backward compatibility to iOS 8.
- Can be used with Swift and Objective C.
- And most importantly, it looks good!
Download the source code and open the Examples project to try JGProgressHUD and see all of its features in action!
[](https://github.com/JonasGessner/JGProgressHUD/releases)
[](https://github.com/JonasGessner/JGProgressHUD/blob/master/LICENSE.txt)
[](https://cocoapods.org/pods/JGProgressHUD)
[](https://github.com/Carthage/Carthage)
Examples
--------------
#### Showing indeterminate progress:
Objective C:
```objc
JGProgressHUD *HUD = [JGProgressHUD progressHUDWithStyle:JGProgressHUDStyleDark];
HUD.textLabel.text = @"Loading";
[HUD showInView:self.view];
[HUD dismissAfterDelay:3.0];
```
Swift:
```swift
let hud = JGProgressHUD(style: .dark)
hud.textLabel.text = "Loading"
hud.show(in: self.view)
hud.dismiss(afterDelay: 3.0)
```
This displays a dark HUD with an activity indicator and the title "Loading". The HUD is presented with a fade animation and is dismissed after 3 seconds with a fade animation.
#### Showing an error message:
```objc
JGProgressHUD *HUD = [JGProgressHUD progressHUDWithStyle:JGProgressHUDStyleDark];
HUD.textLabel.text = @"Error";
HUD.indicatorView = [[JGProgressHUDErrorIndicatorView alloc] init]; //JGProgressHUDSuccessIndicatorView is also available
[HUD showInView:self.view];
[HUD dismissAfterDelay:3.0];
```
#### Showing determinate progress:
```objc
JGProgressHUD *HUD = [JGProgressHUD progressHUDWithStyle:JGProgressHUDStyleDark];
HUD.indicatorView = [[JGProgressHUDPieIndicatorView alloc] init]; //Or JGProgressHUDRingIndicatorView
HUD.progress = 0.5f;
[HUD showInView:self.view];
[HUD dismissAfterDelay:3.0];
```
__Important:__ You should always show `JGProgressHUD` in a `UIViewController` view.
Download the source code and open the Examples project to explore more use cases for JGProgressHUD.
Customization
-----------
### Styles:
JGProgressHUD can be displayed in 3 styles:
- __Extra Light__
- __Light__
- __Dark__
### Indicator Views:
By default a HUD will display an indeterminate progress indicator. The indicator view can be completely hidden by setting the `indicatorView` property to `nil`. These indicator views are available by default:
- __Indeterminate progress indicator__
- __Pie progress indicator__
- __Ring progress indicator__
- __Success indicator__
- __Error indicator__
- __Image indicator__
Custom indicator views can be created by subclassing `JGProgressHUDIndicatorView`.
### Animations:
By default a HUD will use a fade animation. Several parameters can be altered such as animation duration or animation curve. A HUD can be displayed without animation and different animations can be used. These animations are available by default:
- __Fade__
- __Zoom and Fade__
Custom animations can be created by subclassing `JGProgressHUDAnimation`.
To dim the content behind the HUD set your dim color as `backgroundColor` of your `JGProgressHUD` instance.
Installation
--------------
### CocoaPods:
In your `Podfile` add:
```
pod 'JGProgressHUD'
```
### Carthage:
In your `Cartfile` add:
```
github "JonasGessner/JGProgressHUD"
```
### Manual Installation (Framework):
1. Drag the `JGProgressHUD.xcodeproj` file into your Xcode project.
2. Add `JGProgressHUD.framework` to "Embedded Binaries" in the "General" tab of your target.
Then import the module where you want to use it:
```objc
@import JGProgressHUD;
```
Swift:
```swift
import JGProgressHUD
```
See the Examples project for an example implementation of JGProgressHUD as framework.
Requirements
------------
- Base SDK of iOS/tvOS 11.0 or higher.
- Deployment target of iOS 8.0, tvOS 9.0 or higher.
JGProgressHUD can also be used by projects written in Swift. See Installation for details.
Documentation
----------------
Detailed documentation can be found on here.
Each class and method is well documented, making it easy to quickly get a good overview. To start, see JGProgressHUD.h.
License
---------
MIT License.
© 2014-2018, Jonas Gessner.
Credits
----------
Created and maintained by Jonas Gessner, © 2014-2018.