Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/PiXeL16/RevealingSplashView

A Splash view that animates and reveals its content, inspired by Twitter splash
https://github.com/PiXeL16/RevealingSplashView

Last synced: 3 months ago
JSON representation

A Splash view that animates and reveals its content, inspired by Twitter splash

Awesome Lists containing this project

README

        

![Banner](/Web/banner.png)

[![Build Status](https://travis-ci.org/PiXeL16/RevealingSplashView.svg?branch=master)](https://travis-ci.org/PiXeL16/RevealingSplashView/) [![codecov.io](https://codecov.io/github/PiXeL16/RevealingSplashView/coverage.svg?branch=master)](https://codecov.io/github/PiXeL16/RevealingSplashView?branch=master) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/RevealingSplashView.svg)](https://img.shields.io/cocoapods/v/RevealingSplashView.svg) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/matteocrippa/awesome-swift) [![Language](https://img.shields.io/badge/language-Swift%205.x-orange.svg)](https://swift.org) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/PiXeL16/RevealingSplashView/master/LICENSE)

# RevealingSplashView
A Splash view that animates and reveals its content, inspired by the `Twitter` splash.

![RevealingSplashView](/Web/revealingSplashView.gif)

:star: Features
---
* Customizable reveal icon image.
* Customizable icon image color.
* Customizable icon image size.
* Customizable background color.
* Customizable animation duration.
* Customizable animation delay.
* Several animation to choose from.
* Easy to use :wink:.

:octocat: Installation
---
Get `RevealingSplashView` on CocoaPods, just add `pod 'RevealingSplashView'` to your `Podfile` and then run `pod install`. You can also add the github to your `Carthage` file.

If you use `Carthage` you can just install it by adding `github "PiXeL16/RevealingSplashView"` to your `Carthage` file.

### Using Swift 2.3?
If you are using Swift 2.3, please use the `0.0.6` release.

:metal: Usage
---

### Video Tutorial
`Rebeloper` created a nice [Video Tutorial](https://www.youtube.com/watch?v=jtCsh4R8UWo) where you can also learn how to use this control!. You can also follow the docs below

Usage is pretty easy, just initialize your `RevealingSplashView` in your entry `ViewController` and in your `viewDidLoad()` function add it to your view. Then call `startAnimation()`:

```swift
import RevealingSplashView

override func viewDidLoad() {
super.viewDidLoad()

//Initialize a revealing Splash with with the iconImage, the initial size and the background color
let revealingSplashView = RevealingSplashView(iconImage: UIImage(named: "twitterLogo")!,iconInitialSize: CGSize(width: 70, height: 70), backgroundColor: UIColor(red:0.11, green:0.56, blue:0.95, alpha:1.0))

//Adds the revealing splash view as a sub view
self.view.addSubview(revealingSplashView)

//Starts animation
revealingSplashView.startAnimation(){
print("Completed")
}

}
```

**Ideally** your `iconInitialSize` should match the size of the icon in your `LaunchScreen.storyboard`.

So it you set your constrains in your `LaunchScreen.storyboard` to be 80 `height` and 80 `width` you should set the same size as the initial size of the `RevealingSplashView`

### Custom Icon Color
You are also able to change the color of your `iconImage`.

```swift
import RevealingSplashView

override func viewDidLoad() {
super.viewDidLoad()

//Initialize a revealing Splash with with the iconImage, the initial size and the background color
let revealingSplashView = RevealingSplashView(iconImage: UIImage(named: "twitterLogo")!,iconInitialSize: CGSize(width: 70, height: 70), backgroundColor: UIColor(red:0.11, green:0.56, blue:0.95, alpha:1.0))

revealingSplashView.useCustomIconColor = true
revealingSplashView.iconColor = UIColor.red

//Adds the revealing splash view as a sub view
self.view.addSubview(revealingSplashView)

//Starts animation
revealingSplashView.startAnimation(){
print("Completed")
}

}
```
This will change the actual icon color to red before the animation.

### Custom Background Image
You are also able to change the background image of your `backgroundImage`.

```swift
import RevealingSplashView

override func viewDidLoad() {
super.viewDidLoad()

//Initialize a revealing Splash with with the iconImage, the initial size and the background color
let revealingSplashView = RevealingSplashView(iconImage: UIImage(named: "twitterLogo")!, iconInitialSize: CGSize(width: 70, height: 70), backgroundImage: UIImage(named: "BackgroundImage")!)

revealingSplashView.useCustomIconColor = false
revealingSplashView.iconColor = UIColor.red

//Adds the revealing splash view as a sub view
self.view.addSubview(revealingSplashView)

//Starts animation
revealingSplashView.startAnimation(){
print("Completed")
}

}
```

### Using NavigationBar or TabBar?
If you are using a `NavigationBar` or `TabBar` as your entry view controller, chances are that the animation will look offset by some pixels.
There are a couple of options here:
Instead of adding the `RevealingSplashView` to your ViewController, you can add it to your `window`.
```
let window = UIApplication.sharedApplication().keyWindow
window?.addSubview(revealingSplashView)
```

You can also create `another` entry view controller. Then add the `RevealingSplashView` to that ViewController instead of the one with the `NavigationBar` or `TabBar`.
Then after the animation of the `RevealingSplashView` ends you can transition to your NavigationViewController.

:thumbsup: Animations Types
----
There are several animations to choose from just set the `animationType` property of the `RevealingSplashView`

### Twitter

Its the default animation that `Twitter` use for their app. If `animationType` is not set it will default to this one.

![RevealingSplashView](/Web/revealingSplashView.gif)

### HeartBeat
HeartBeat like animation, unlike the other animations, this `special` animation allows you to continue to animate until a function its called.
This could be more entertaining to the user than having a quick launch and waiting on a spinning wheel if the app needs to fetch more data.

To use the Heartbeat animation you should `startAnimation()` as normal and then proceed with your network or background job. When you are done, just call
```swift
.heartAttack = true
```
And the splashview should dismiss.

![HeartBeatAnimation](/Web/heartBeat.gif)

### Rotate Out

Similar to the `Twitter` one but rotating while zooming out.

```swift

revealingSplashView.animationType = SplashAnimationType.rotateOut
```
![RotateOutAnimation](/Web/rotateAndZoomOut.gif)

### Pop and Zoom Out

Pop the view a couple of times and zoom out.

```swift

revealingSplashView.animationType = SplashAnimationType.popAndZoomOut
```
![RotateOutAnimation](/Web/popAndZoomOut.gif)

### Squeeze and Zoom Out

Squeeze the view and zoom out.

```swift

revealingSplashView.animationType = SplashAnimationType.squeezeAndZoomOut
```
![RotateOutAnimation](/Web/squeezeAndZoomOut.gif)

### Swing and Zoom Out

Swings the view and zoom out.

```swift

revealingSplashView.animationType = SplashAnimationType.swingAndZoomOut
```
![RotateOutAnimation](/Web/swingAndZoomOut.gif)

### Wobble and Zoom Out

Wobbles the view and zoom out.

```swift

revealingSplashView.animationType = SplashAnimationType.wobbleAndZoomOut
```
![RotateOutAnimation](/Web/wobbleAndZoomOut.gif)

TODO
-----
* Better code coverage
* More animations

:alien: Author
------
Chris Jimenez - http://code.chrisjimenez.net, [@chrisjimeneznat](http://twitter.com/chrisjimeneznat)

:beer: Donate
------
If you want to buy me a beer, you can donate to my coin addresses below:
#### BTC
1BeGBew4CBdLgUSmvoyiU1LrM99GpkXgkj
#### ETH
0xa59a3793E3Cb5f3B1AdE6887783D225EDf67192d
#### LTC
Ld6FB3Tqjf6B8iz9Gn9sMr7BnowAjSUXaV

## License
`RevealingSplashView` is released under the MIT license. See [LICENSE](https://github.com/pixel16/RevealingSplashView/blob/master/LICENSE) for details.