iPhoneXのViewでの位置の取得方法まとめ


取得するタイミングに注意

詳しくはこちらの記事に書いてあったが、viewWillLayoutSubviews()以降に呼ばれるメソッドの中でしかSafeAreaの値は取得できないので注意。
上の記事にはviewDidLoad()などが呼ばれる順番も書いてあった。

SafeAreaの座標の取得方法

SafeAreaは上下に被らない長方形の所の話

            //safeAreaFrameが上の青い部分のCGRect.
            let safeAreaFrame = self.view.safeAreaLayoutGuide.layoutFrame
            let safeAreaTop = safeAreaFrame.origin.y
            let safeAreaBottom = safeAreaFrame.origin.y + safeAreaFrame.height
            let safeAreaRight = safeAreaFrame.origin.x
            let safeAreaLeft = safeAreaFrame.origin.x + safeAreaFrame.width

SafeArea外の画面を覆う四角の座標取得方法

iPhoneXはいびつな画面の形をしているが、それを覆うような長方形viewをうまく配置すると考えると話は楽になる

            //overViewFrameが上からかぶせる長方形のCGRect
            let overViewFrame = self.view.safeAreaLayoutGuide.owningView!.frame
            let overViewTop = overViewFrame.origin.y
            let overViewBottom = overViewFrame.origin.y + overViewFrame.height
            let overViewRight = overViewFrame.origin.x
            let overViewLeft = overViewFrame.origin.x + overViewFrame.width

あとはうまく使おう

ここさえ取れればいくらでも自作でnavigationBarやらを作れる気がしたのでやってみよう。
あとでまたnavigationBarを作ったら記事書いてここに載せます。

追記: かけたー
iPhoneXでも他でも使える"上に表示するバー"(NavigationBar)を作ろう