450
434

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[iOS]TwitterアプリのようにLaunch Screenがアニメーションするように見せる技

Posted at

7fa34da5-a3f5-499f-acfe-827a08e2db5d.gif

ツイッターの公式アプリを使ったことがある人はこちらの起動画面を見たことがあると思います。ツイッターアイコンが現れ、そのアイコンがそのまま拡大して始まります。Launch Screenがアニメーションするのは海外製のアプリに時々みられる手法です。

これと同じようなことを弊社の無料の絵本アプリ PIBO(ピーボ)で実装してみました。
そのやり方のサンプルを紹介します。

#やり方
手法は至って簡単です。
・①LaunchScreenを設置する
・②LaunchScreenと同じViewを起動時に表示する
・③そのViewをアニメーションさせる

の3工程です。やっていることは結構簡単です。

##①LaunchScreenを設置する
普通にLaunchScreenを作ればOKです。

・LaunchScreen.xibにImage Viewを追加してlogo画像を設置します。
image

・logoに対しAdd New Alignment Constraintsで中央固定にします。
image

・Launch Screen FileにLaunchScreenを設定する
image

これで起動時にロゴが表示されるLaunch Screenが作れました。

##②LaunchScreenと同じViewを起動時に表示する
初期起動時に読み込まれるViewControllerにロゴのUIImageViewを追加していきます。(LaunchScreen.xibを再利用する方法もありますが、よりシンプルにしたかったのでUIImageViewを使うことにします)

Launch Screen Fileに設定したLaunchScreen.xibが起動すると消えるのですが、その下にも同じ画像が乗っているので消えたことが実質わからないようにしています。

class ViewController: UIViewController {
    
    var logoImageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.view.backgroundColor = UIColor.whiteColor()

        //imageView作成
        self.logoImageView = UIImageView(frame: CGRectMake(0, 0, 204, 77))
        //画面centerに
        self.logoImageView.center = self.view.center
        //logo設定
        self.logoImageView.image = UIImage(named: "logo")
        //viewに追加
        self.view.addSubview(self.logoImageView)
            
    }

##③そのViewをアニメーションさせる

viewDidAppearにlogoImageViewをアニメーションさせて、消すロジックを書いていきます。

    override func viewDidAppear(animated: Bool) {
        //少し縮小するアニメーション
        UIView.animateWithDuration(0.3,
            delay: 1.0,
            options: UIViewAnimationOptions.CurveEaseOut,
            animations: { () in
                self.logoImageView.transform = CGAffineTransformMakeScale(0.9, 0.9)
            }, completion: { (Bool) in
                
        })
        
        //拡大させて、消えるアニメーション
        UIView.animateWithDuration(0.2,
            delay: 1.3,
            options: UIViewAnimationOptions.CurveEaseOut,
            animations: { () in
                self.logoImageView.transform = CGAffineTransformMakeScale(1.2, 1.2)
                self.logoImageView.alpha = 0
            }, completion: { (Bool) in
                self.logoImageView.removeFromSuperview()
        })        
    }

そうするとこのようにできます。

3a703c3f-cce9-4462-8338-3cfdcb69ab8f.gif

以上、このような簡単な方法でツイッターアプリのようなLaunchScreenをシームレスにアニメーションするアプリを作れますので、試してみたい方はぜひ!

動作のサンプルはこちらのアプリから無料ダウンロードで確認して頂けますので見てみてください!

無料の絵本アプリ PIBO(ピーボ)

450
434
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
450
434

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?