スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Swift】Custom Segueを作る方法

Segue(シーンの切り替え)のアニメーションを好きなものにできるとアプリが一気にかっこよくなる。
なんだか面倒くさそうだが、実際にやってみると割と簡単なのでご紹介。

こちらの記事(英文)を参考にしたが、ものすごく丁寧で不要部分もあるのでエッセンスだけを取り出すと下記のようになる。

1. カスタムSegue用のファイルを作る(コードを書く部分)
2. 通常のSegue設置と同じように設置する



1. [File] > [New] > [File] > iOS - Source - Cocoa Touch Class
と進み、下図のようにしてファイルを作成。
Untitled_2015041220261755c.png

2. 作成したファイルを下記のように編集

import UIKit

class mySegue: UIStoryboardSegue {
override func perform() {
// Assign the source and destination views to local variables.
var firstVCView = self.sourceViewController.view as UIView!
var secondVCView = self.destinationViewController.view as UIView!

// Get the screen width and height.
let screenWidth = UIScreen.mainScreen().bounds.size.width
let screenHeight = UIScreen.mainScreen().bounds.size.height

// Specify the initial position of the destination view.
secondVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight)

// Access the app's key window and insert the destination view above the current (source) one.
let window = UIApplication.sharedApplication().keyWindow
window?.insertSubview(secondVCView, aboveSubview: firstVCView)

// Animate the transition.
UIView.animateWithDuration(0.4, animations: { () -> Void in
firstVCView.frame = CGRectOffset(firstVCView.frame, 0.0, -screenHeight)
secondVCView.frame = CGRectOffset(secondVCView.frame, 0.0, -screenHeight)

}) { (Finished) -> Void in
self.sourceViewController.presentViewController(self.destinationViewController as UIViewController,
animated: false,
completion: nil)
}

}
}

3. あとは通常のSegueと同じようにボタンなどに接続して「custom」からmySegueを選択すれば良い。
上記で赤字になっている部分が「After」の定義。つまり、Segueのアニメーション後どのようになるかという定義。この赤い部分を変更し、合わせてそれに対応する部分を//Animate the transition. コメントの上に書けば自分の好きな定義に変更できる。
例えばフェードインしたい場合は、


firstVCView.layer.opacity = 1
secondVCView.layer.opacity = 0

// Animate the transition.
UIView.animateWithDuration(1.5, animations: { () -> Void in
firstVCView.frame = CGRectOffset(firstVCView.frame, 0.0, 0)
secondVCView.frame = CGRectOffset(secondVCView.frame, 0.0, 0)


のような感じ。
どうすればかっこいいアニメーションができるかは各自実験してみてほしい。

コメント

コメントの投稿

非公開コメント

PR

PR

プロフィール

何でも書くman

Author:何でも書くman
思ったことや備忘録など、とりあえずなんでも書きます。IT系のことや趣味、生活に関わることなども。

ページの先頭へ戻る
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。