Skip to content

Repository files navigation

CountdownLabel

SwiftCarthage CompatibleCocoaPods Compatible

Simple countdown UILabel with morphing animation, and some useful function.

sample

features

  • Simple creation
  • Easily get status of countdown from property and delegate.
  • Insert some of function, and completion
  • Style change as usual as UILabel do
  • Morphing animation from LTMorphingLabel.
  • XCTest assertion

Version vs Swift version.

Below is a table that shows which version of what you should use for your Swift version.

Swift versionversion
4.2>= 4.0
4.0, 4.1>= 3.0
3.X>= 2.0
2.31.3

Usage

You need only 2 lines.

// from current Date, after 30 minutes.
letcountdownLabel=CountdownLabel(frame: frame, minutes:30) // you can use NSDate as well
countdownLabel.start()

Morphing example

Use animationType. Those effect comes from LTMorphingLabel.

letcountdownLabel=CountdownLabel(frame: CGRectZero, time:60*60)
countdownLabel.animationType =.Pixelate
countdownLabel.start()
morphing effectexample
.Burnsample
.Evaporatesample
.Fallsample
.Pixelatesample
.Scalesample
.Sparklesample

Style

you can directly allocate it as a UILabel property just like usual.

countdownLabel.textColor =.orangeColor()
countdownLabel.font =UIFont(name:"Courier", size:UIFont.labelFontSize())
countdownLabel.start()

sample

Get Status of timer

there's some property for reading status.

countdownLabel.timeCounted // timer that has been counted
countdownLabel.timeRemaining // timer's remaining
// example
@IBActionfunc getTimerCounted(sender:UIButton){debugPrint("\(countdownLabel.timeCounted)")}@IBActionfunc getTimerRemain(sender:UIButton){debugPrint("\(countdownLabel.timeRemaining)")}

sample

Control countdown

You can pause, start, change time.

// check if pause or not
if countdownLabel.isPaused {
// timer start
countdownLabel.start()}else{
// timer pause
countdownLabel.pause()}
// -2 minutes for ending
@IBActionfunc minus(btn:UIButton){
countdownLabel.addTime(-2)}
// +2 minutes for ending
@IBActionfunc plus(btn:UIButton){
countdownLabel.addTime(2)}

sample

Insert Function

Using then function or delegate, you can set your function anywhere you like.

// then property countdownLabel.then(10){[unowned self]inself.countdownLabel.animationType =.Pixelate
self.countdownLabel.textColor =.greenColor()}
countdownLabel.then(5){[unowned self]inself.countdownLabel.animationType =.Sparkle
self.countdownLabel.textColor =.yellowColor()}
countdownLabel.start(){self.countdownLabel.textColor =.whiteColor()}
// delegate
func countingAt(timeCounted timeCounted:NSTimeInterval, timeRemaining:NSTimeInterval){switch timeRemaining {case10:self.countdownLabel6.animationType =.Pixelate
self.countdownLabel6.textColor =.greenColor()case5:self.countdownLabel6.animationType =.Sparkle
self.countdownLabel6.textColor =.yellowColor()default:break}}func countdownFinished(){self.countdownLabel.textColor =.whiteColor()}

sample

Attributed Text

you can set as attributedText too. note:but morphing animation will be disabled.

countdownLabel.setCountDownTime(30)
countdownLabel.timeFormat ="ss"
countdownLabel.countdownAttributedText =CountdownAttributedText(text:"timer HERE in text", replacement:"HERE")
countdownLabel.start()

sample

Format

Don't specified over 24 hours or you'll get wrong format. CountdownLabel uses 00:00:00 (HH:mm:ss) as default format. if you prefer using another format, Your can set your time format like below.

countdownLabel.timeFormat = @"mm:ss"

Scheduled

you can set scheduled timer

// after 10 minutes will start a countdown from 20.
letfromDate=NSDate().dateByAddingTimeInterval(10)lettargetDate= fromDate.dateByAddingTimeInterval(20)letcountdownLabel=CountdownLabel(frame: CGRectZero, fromDate: fromDate, targetDate: targetDate)
countdownLabel.start()

Check Status

some public properties are useful.

countdownLabel.isCounting // check timer is counting now
countdownLabel.isPaused // check timer was stopped
countdownLabel.isFinished // check timer has ended
countdownLabel.morphingEnabled // check morphing is enabled

Requirements

  • iOS 9.0+
  • Swift 2.3+
  • ARC

##Installation

####CocoaPods available on CocoaPods. Just add the following to your project Podfile:

pod 'CountdownLabel'
use_frameworks!

####Carthage To integrate into your Xcode project using Carthage, specify it in your Cartfile:

github "suzuki-0000/CountdownLabel"

Inspirations

License

available under the MIT license. See the LICENSE file for more info.

About

Simple countdown UILabel with morphing animation, and some useful function.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages