LoginSignup
0
1

More than 3 years have passed since last update.

SafeAreaのTopまでViewをアニメーションする方法

Posted at

最近SafeAreaというのを知りました!
iPhoneXが出たことにより、SafeAreaが誕生したみたいです。
こんな問題がありました。
アニメーションさせたときにViewがSafeArea外まで表示されてしまって困っている。
解決したのでここにメモをしていきますね :relaxed:

SafeAreaのサイズ

このオレンジの部分がSafeAreaです。
スクリーンショット 2020-11-25 20.29.50.png

SafeArea取得

この取得で必要になるのがsafeAreaInsetsです!
safeAreaInsetsにTopまたはBottomでSafeAreaの上と下を取得することができます。
こちらを上手く使うと、SafeArea外に入ることなくアニメーションが可能です

let safeAreaTop = self.view.safeAreaInsets.top
let safeAreaBottom = self.view.safeAreaInsets.bottom

SafeAreaのTopまでAnimationさせてみる

ファイル構成はsampleViewController.swiftsampleViewController.xib
のみ使っていきます!⚠️あとのファイルは気にしないでください。

スクリーンショット 2020-11-25 21.05.46.png

まずはViewを置いて、紐付けしていきます。

コードはこんな感じです。

sampleViewController.swift
import UIKit

class sampleViewController: UIViewController {

    @IBOutlet weak var sampleView: sampleHomeView!

    override func viewDidLoad() {
        super.viewDidLoad()

        Animation()
    }



    func Animation() {
       UIView.animate(withDuration: 0.3,
                      delay: 0.0,
                      options: .curveEaseInOut,
                      animations: {
             self.sampleView.frame = CGRect(x: self.view.frame.minX,
                                            y: self.view.safeAreaInsets.top,
                                            width: self.sampleView.frame.width,
                                            height: self.sampleView.frame.height)
                       }
        )
    }
}

Animationの部分でself.View.safeAreaInset.topというコードを書くだけです。
safeAreaの上の部分を取得してViewを動かすことができます!

実際に動いたのがこちらです。
スクリーンショット 2020-11-25 20.16.56.png

このようにSafeArea内にViewが動いてますね(^ ^)
以上SafeAreaのTopまでViewをアニメーションする方法でした!!

0
1
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
0
1