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の時とさほどかわりませんが、ブロック構文やアノテーションなどの知識がなくとも、クロージャなどの他言語の知識で実装できるのがすばらしいと思いました!
時間があったら本格的なアプリも作っていってみたいと思います!