UINavigationBarのスクリーンショットがうまく取れない問題の解消

UINavigationBarのスクリーンショットがうまく取れない問題の解消rnystrom/RNFrostedSidebar という、半透明メニューバーを使おうと思っていたら、どうしてもUINavigationBarの部分が黒くぼやけてしまう問題が発生した。色々いじって解消したのでメモ。

そもそも、UINavigationBarにはtranslucentというプロパティがある。半透明ですってプロパティ。このプロパティをNOにすると半透明ではなくなる。UIViewのopaqueプロパティに似てるかも。

で、常にUINavigationBarを非透過にするのは嫌なので、スクリーンショットを撮る瞬間だけ、透過にする。こんな感じ。

self.navigationController.navigationBar.translucent = NO;
// ここでスクリーンショットを撮る。僕の場合はここでRNFrostedSidebarをshowする。
self.navigationController.navigationBar.translucent = YES;

コードの中を探っていくとRNFrostedSideBarはshowの時に、画面のスクリーンショットを撮っているのでこのタイミングに書くと、UINavigationBarが非透過になってうまくスクリーンショットが撮れる。

RNFrostedSidebarは簡単にきれいなメニューが表示できて楽ちん。変にTabBarControllerやNavigationControllerを継承したりしていないので、自分のコードと分離して管理できて使い勝手が良い。もし他のメニューが良ければ、取り替えればいいだけだしね!

Pocket
LINEで送る

You may also like...