Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andresinaka/SnapTimer
Implementation of Snapchat's stories timer.
https://github.com/andresinaka/SnapTimer
animation completion-handler snapchat-stories timer
Last synced: about 1 month ago
JSON representation
Implementation of Snapchat's stories timer.
- Host: GitHub
- URL: https://github.com/andresinaka/SnapTimer
- Owner: andresinaka
- License: mit
- Created: 2016-09-04T19:07:55.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-09-17T15:32:26.000Z (over 8 years ago)
- Last Synced: 2024-11-26T02:32:20.553Z (about 2 months ago)
- Topics: animation, completion-handler, snapchat-stories, timer
- Language: Swift
- Size: 2.33 MB
- Stars: 282
- Watchers: 8
- Forks: 21
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-ios - SnapTimer - Implementation of Snapchat's stories timer. (UI / Activity Indicator)
- awesome-ios-star - SnapTimer - Implementation of Snapchat's stories timer. (UI / Activity Indicator)
README
![SnapTimer](images/snaptimer-logo.png)
# SnapTimer
SnapTimer is a custom UIView that behaves exactly the same as the one on Snapchat's stories.
[![Build Status](https://travis-ci.org/andresinaka/SnapTimer.svg?branch=master)](https://travis-ci.org/andresinaka/SnapTimer) [![codecov.io](https://codecov.io/github/andresinaka/SnapTimer/badge.svg?branch=master)](https://codecov.io/github/andresinaka/SnapTimer?branch=master)
```
Swift 3.0 Support on master branch! 👌👌
Swift 2.3 Support on Swift2.3.
```## Features
- Two different timers, 'outer' and 'inner'.
- Independent animations for each of the timers.
- Customizable colors.
- Completion handlers.
- Fully Swift.# What does it look like?
> A picture is worth a thousand words
![samples](images/sample-timers.png)
# Installation
You can just clone the repo and copy the ```SnapTimer``` folder to your project or you can use one of the following options:
### Setting up with [CocoaPods](http://cocoapods.org/)```ruby
pod 'SnapTimer'
```Then:
```swift
import SnapTimer
```And you are all set!
### Setting up with [Carthage](https://github.com/Carthage/Carthage)
- TODO
# How do I add it?
1. Add a `UIView` to your Storyboard.
2. Select the view, go to the `Identity Inspector` and set the class to `SnapTimerView`
![identity-inspector](images/identity-inspector.png)3. Create an `@IBOutlet` in your view controller and that's it.
`SnapTimerView` implements `@IBDesignable` so the view should automatically render in your Interface Builder. Also it implements `@IBInspectable` for the view properties:![properties](images/properties.png)
4. That's it!
### Setting inner and outer values
**innerValue** and **outerValue** ranges go from 0 to 100.
* To set values without animations you just have to:
```swift
self.snapTimerView.outerValue = 25
self.snapTimerView.innerValue = 50
```
![ej1](images/ej1.gif)* To animate values:
```swift
self.snapTimerView.animateOuterValue(50)
self.snapTimerView.animateInnerValue(25)
```
![ej1](images/ej2.gif)* To animate values setting the time and a completion handler:
```swift
self.snapTimerView.animateOuterToValue(50, duration: 30) {
puts("Done!")
}
self.snapTimerView.animateInnerToValue(100, duration: 30) {
puts("Done!")
}
```
### Pausing and resuming animations:if your app goes to background or the Notifications/Control center are opened you may want to pause the animations, to do that SnapTimer has two handy methods:
```swift
self.snapTimerView.resumeAnimation()
self.snapTimerView.pauseAnimation()
```# Check the sample project!
![samples](images/ej3.gif)
# Cool ways to improve it?
Hey, If you have cool ideas to add to this please feel free to send a PR! Also if you are using this in your app and what to let me know I'll be happy to add a section here with the apps currently using this!