Help us understand the problem. What is going on with this article?

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

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

freee
スモールビジネスのバックオフィス業務をテクノロジーで自動化し、日本のスモールビジネスを元気にする
http://www.freee.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away