You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

240 lines
7.0 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. NVActivityIndicatorView
  2. =======================
  3. [![Build Status](https://travis-ci.org/ninjaprox/NVActivityIndicatorView.svg?branch=master)](https://travis-ci.org/ninjaprox/NVActivityIndicatorView)
  4. [![Cocoapods Compatible](https://img.shields.io/cocoapods/v/NVActivityIndicatorView.svg)](https://img.shields.io/cocoapods/v/NVActivityIndicatorView.svg)
  5. [![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
  6. [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)
  7. ## Introduction
  8. `NVActivityIndicatorView` is a collection of awesome loading animations.
  9. This is original a fork from [DGActivityIndicatorView](https://github.com/gontovnik/DGActivityIndicatorView), inspired by [Loaders.css](https://github.com/ConnorAtherton/loaders.css), written in Swift with full implementation of animations, plus more.
  10. You can also find Objective-C version of this [here](https://github.com/ninjaprox/DGActivityIndicatorView).
  11. ## Demo
  12. ![alt tag](https://raw.githubusercontent.com/ninjaprox/NVActivityIndicatorView/master/Demo.gif)
  13. For first-hand experience, just open the project and run it.
  14. ## Animation types
  15. | Type | Type | Type | Type |
  16. |---|---|---|---|
  17. |1. ballPulse | 2. ballGridPulse | 3. ballClipRotate | 4. squareSpin|
  18. |5. ballClipRotatePulse | 6. ballClipRotateMultiple | 7. ballPulseRise | 8. ballRotate|
  19. |9. cubeTransition | 10. ballZigZag | 11. ballZigZagDeflect | 12. ballTrianglePath|
  20. |13. ballScale | 14. lineScale | 15. lineScaleParty | 16. ballScaleMultiple|
  21. |17. ballPulseSync | 18. ballBeat | 19. lineScalePulseOut | 20. lineScalePulseOutRapid|
  22. |21. ballScaleRipple | 22. ballScaleRippleMultiple | 23. ballSpinFadeLoader | 24. lineSpinFadeLoader|
  23. |25. triangleSkewSpin | 26. pacman | 27. ballGridBeat | 28. semiCircleSpin|
  24. |29. ballRotateChase | 30. orbit | 31. audioEqualizer | 32. circleStrokeSpin|
  25. ## Installation
  26. ### Cocoapods
  27. Install [Cocoapods](https://cocoapods.org/#install) if need be.
  28. ```bash
  29. $ gem install cocoapods
  30. ```
  31. Add `NVActivityIndicatorView` in your `Podfile`.
  32. ```ruby
  33. use_frameworks!
  34. pod 'NVActivityIndicatorView'
  35. ```
  36. If you're using `NVActivityIndicatorView` in an app extension, use `NVActivityIndicatorView/AppExtension` instead.
  37. ```ruby
  38. use_frameworks!
  39. pod 'NVActivityIndicatorView/AppExtension'
  40. ```
  41. Then, run the following command.
  42. ```bash
  43. $ pod install
  44. ```
  45. _**Note:** Please refer to the migration note for version [`3.7.0`](#version-370) below._
  46. ### Carthage
  47. Install [Carthage](https://github.com/Carthage/Carthage#installing-carthage) if need be.
  48. ```bash
  49. $ brew update
  50. $ brew install carthage
  51. ```
  52. Add `NVActivityIndicatorView` in your `Cartfile`.
  53. ```ruby
  54. github "ninjaprox/NVActivityIndicatorView"
  55. ```
  56. Run `carthage` to build the framework and drag the built `NVActivityIndicatorView.framework` in the folder appropriateto the platform, e.g. iOS, tvOS, into your Xcode project.
  57. _**Note:** You might encounter compile issue, if so please use `carthage` branch instead. Check issue [#101](https://github.com/ninjaprox/NVActivityIndicatorView/issues/101) for more information._
  58. ### Manual
  59. Copy `NVActivityIndicatorView` folder to your project. That's it.
  60. _**Note:** Make sure that all files in `NVActivityIndicatorView` included in Compile Sources in Build Phases._
  61. _**Note:** If you encounter issues while uploading the app to iTunes Connect, remove the `Info.plist` file in `NVActivityIndicatorView`. Check issue [#129](https://github.com/ninjaprox/NVActivityIndicatorView/issues/129) for more information._
  62. ## Migration
  63. ### Version 4.4.0
  64. This version requires Xcode 10.1 and Swift 4.2.
  65. ### Version 4.0.0
  66. This version requires Xcode 9.0 and Swift 4.
  67. ### Version 3.7.0
  68. This version splits `NVActivityIndicatorView` pod to 2 subpods `NVActivityIndicatorView/Presenter` and `NVActivityIndicatorView/AppExtension`. There is no need to change `pod NVActivityIndicatorView` to `pod NVActivityIndicatorView/Presenter` since it will be installed by default if you use the main pod name.
  69. However, if you want to use `NVActivityIndicatorView` in an app extension, use `pod NVActivityIndicatorView/AppExtension` instead.
  70. _**Note:** Related issue [#119](https://github.com/ninjaprox/NVActivityIndicatorView/issues/119)._
  71. ## Usage
  72. Firstly, import `NVActivityIndicatorView`.
  73. ```swift
  74. import NVActivityIndicatorView
  75. ```
  76. ### Initialization
  77. Then, there are two ways you can create `NVActivityIndicatorView`:
  78. - By storyboard, changing class of any `UIView` to `NVActivityIndicatorView`.
  79. _**Note:** Set Module to `NVActivityIndicatorView`._
  80. - By code, using initializer. All parameters other than `frame` are optional and `NVActivityIndicatorView.DEFAULT_*` are used as default values.
  81. ```swift
  82. NVActivityIndicatorView(frame: frame, type: type, color: color, padding: padding)
  83. ```
  84. ### Control
  85. Start animating.
  86. ```swift
  87. activityIndicatorView.startAnimating()
  88. ```
  89. Stop animating.
  90. ```swift
  91. activityIndicatorView.stopAnimating()
  92. ```
  93. Determine if it is animating.
  94. ```swift
  95. animating = activityIndicatorView.isAnimating
  96. ```
  97. ### Change properties
  98. In storyboard, you can change all properties in Attributes inspector tab of Utilities panel.
  99. _**Note:** Use one of values (case-insensitive) in [Animation types](#animation-types) for `Type Name`._
  100. All properties are public so you can change them after initializing.
  101. _**Note:** All changes must be made before calling `startAnimating()`._
  102. ### UI blocker
  103. By conforming `NVActivityIndicatorViewable` protocol, you can use `NVActivityIndicatorView` as UI blocker for `UIViewController`.
  104. ```swift
  105. class ViewController: UIViewController, NVActivityIndicatorViewable { }
  106. ```
  107. Start animating.
  108. ```swift
  109. startAnimating(size, message) // plus other parameters as in initializer.
  110. ```
  111. Stop animating.
  112. ```swift
  113. stopAnimating()
  114. ```
  115. Check if it is animating.
  116. ```swift
  117. animating = isAnimating
  118. ```
  119. Or you can use `NVActivityIndicatorPresenter` to display UI blocker anywhere.
  120. Start animating.
  121. ```swift
  122. let activityData = ActivityData()
  123. NVActivityIndicatorPresenter.sharedInstance.startAnimating(activityData)
  124. ```
  125. _**Note:** Check [documentation](https://nvactivityindicatorview.vinhis.me) for detail of `ActivityData`._
  126. Stop animating.
  127. ```swift
  128. NVActivityIndicatorPresenter.sharedInstance.stopAnimating()
  129. ```
  130. Change message.
  131. ```swift
  132. NVActivityIndicatorPresenter.sharedInstance.setMessage("Done")
  133. ```
  134. Check if it is animating.
  135. ```swift
  136. animating = NVActivityIndicatorPresenter.sharedInstance.isAnimating
  137. ```
  138. #### Fade in/out animation
  139. You have control over showing and hiding UI blocker animation.
  140. ```swift
  141. startAnimating(fadeInAnimation: fadeInAnimation)
  142. stopAnimating(fadeOutAnimation)
  143. ```
  144. Check `DEFAULT_FADE_IN_ANIMATION` and `DEFAULT_FADE_OUT_ANIMATION` for examples of how to implement animation.
  145. ## Acknowledgment
  146. Thanks [Connor Atherton](https://github.com/ConnorAtherton) for great loaders and [Danil Gontovnik](https://github.com/gontovnik) for kick-start.
  147. ## License
  148. The MIT License (MIT)
  149. Copyright (c) 2016 Vinh Nguyen [@ninjaprox](http://twitter.com/ninjaprox)