2014年12月7日日曜日

Swift で UIButton を 押す と アニメーションするコード(1)

カレンダーをめくるみたいなペロっとするアニメーションとか。
四角をつくってボタン配置、メソッドを追加して終わり。

【手順】
① VIewController.swift に下記コードをコピペ

import UIKit

class ViewController: UIViewController {
    
    let redSquare = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.redSquare.frame = CGRect(x: 100, y: 100, width: 200, height: 200)
        self.redSquare.backgroundColor = UIColor.redColor()
        self.view.addSubview(redSquare)
    }

    @IBAction func Button(sender: AnyObject) {
        
        let transitionOptions = UIViewAnimationOptions.TransitionCurlUp
        
        UIView.transitionWithView(self.redSquare, duration: 1.0, options: transitionOptions, animations: { }, completion: { finished in })

    }
}

② UIButtonをドラッグ&ドロップして真ん中らへんに配置。
  ソースコードの@IBActionの左側に ◯があるので、ドラッグして
  Main.storyboardのButtonに接続する。
  (やり方がわからない人は基本操作を覚える)


【解説】
めんどくさいので省略。

ビルドしてButtonをおせば赤い四角がペロってなるはず。
ならない人はごめんなさい。

let transitionOptions = UIViewAnimationOptions.TransitionCurlUp の最後のTransitionCurlUpとかいうヤツがそのペロって機能らしくて、いくつか種類があるらしい。

.TransitionFlipFromLeft
.TransitionCrossDissolve
.TransitionFlipFromTop

などに変更して効果を確認してみるのも面白いかもしれない。
詳しくはよくわからないですが、Objective-Cができる人なら楽勝。

追記:IBActionを下記コードに変えるとボタンを押した時に10秒かけて右に150pxスライドして動く。正しいやり方なのかどうなのかわかんないです。


@IBAction func Button(sender: AnyObject) {

   UIView.animateWithDuration(10) {
     self.redSquare.center = CGPointMake(self.redSquare.center.x + 150, self.redSquare.center.y )

  }
}