LoginSignup
21
25

More than 5 years have passed since last update.

iOSでUINavigationBarをFacebook風にスクロールで消す時に メモ

Last updated at Posted at 2015-10-15

方法を調べたものの、見つけた方法は面倒そうなのばっかりで少し考えてみたら少し簡単にやる方法を見つけたのでメモ

適当にfakeNavibarとでも名前をつけて一つviewを用意しておく。この時、framenavigationBarと同じ値にして、ビュー階層はnavigationBarの下にしておく。色も同じにするのを忘れずに。

navibar.swift
class FakeNavibarController:UINavigationController{
   var fakeNavibar:UIView!

   override viewDidLoad(){
      super.viewDidLoad()

      self.fakeNavibar = UIView(frame:self.navigationBar.frame)
      self.fakeNavibar.backgroundColor = UIColor.balckColor()//ナビゲーションバーと同じ色
      self.view.insertSubview(self.fakeNavibar, belowSubview: self.navigationBar)

あとはnavigationBarを動かす時にfakeNavibarも一緒に動かして、navigationBarだけ透過させていく。
例えばスクロールする毎に呼び出すメソッドを用意しておいて

navibar.swift
func naviBarFade(diffY:CGFloat){
   let statusBar = UIApplication.sharedApplication().statusBarFrame
   let rate = self.navigationBar.frame.origin.y/statusBar.frame.height

   self.navigationBar.alpha = rate
   self.navigationBar.frame.origin.y -= diffY
   self.fakeNavibar.frame.origin.y = self.navigationBar.frame.origin.y
}

とでもしておけば簡単にできた。単純にナビゲーションバーそのものを透過させていって、その下に同じいろのビューがあるのでアイテムだけ消えていくFacebookアプリ的なことができる。
もっと簡単な方法あるのかな。

21
25
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
21
25