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

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