Xcode
iOS
Swift

Swiftでアニメーションとタイマーを使ってみた

More than 3 years have passed since last update.

swiftでのタイマーやアニメーションの記事がどこにも無かったので書きました


アニメーション


作るもの

とりあえずラベルが画面外から移動してきて、完了後に「移動完了」と表示されるアプリを作ります。


前準備


ViewController.swift

@IBOutlet var label : UILabel


でラベルを宣言し、ストーリーボードと関連づけておきます


実装

viewDidLoad内にこのように書きます

objective-cではブロック構文を使用していましたが、swiftではクロージャを使います。


ViewController.swift

override func viewDidLoad() {

super.viewDidLoad()
UIView.animateWithDuration(3.0, animations: {() -> Void in
self.label.center = CGPoint(x: 100,y: 300);
}, completion: {(Bool) -> Void in
self.label.text = "移動完了";
})
}


タイマー


つくるもの

カウントアップタイマーをつくります


前準備


ViewController.swift

@IBOutlet var label : UILabel


でラベルを宣言し、ストーリーボードと関連づけておきます


実装

viewDidLoad内にこのように書きます

objective-cではブロック構文を使用していましたが、swiftではクロージャを使います。


ViewController.swift

import UIKit

class ViewController: UIViewController {

@IBOutlet var label : UILabel

var countNum = 0

override func viewDidLoad() {
super.viewDidLoad()
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("update"), userInfo: nil, repeats: true)

}

func update() {
label.text = String(countNum)
countNum++
}

}


セレクタはアノテーションなど使わず

Selector("update")

だけでいいようです。簡単!


使ってみての感想

書く量的にはObjective-Cの時とさほどかわりませんが、ブロック構文やアノテーションなどの知識がなくとも、クロージャなどの他言語の知識で実装できるのがすばらしいと思いました!

時間があったら本格的なアプリも作っていってみたいと思います!