2010年7月8日木曜日

ステータスバー、ナビゲーションバー、ツールバーを半透明にする

各種バーの半透明化


プリインストールされている写真アプリなどは、ステータスバー、ナビゲーションバー、ツールバーが半透明になっている。
拡大図


※表示画像は下記から拝借した。
#530「ローテンブルクの乗用車」のフリー写真素材 (無料壁紙画像) - Futta.NET


コード


これを実現するコードはこんな感じ。UIViewController 内に記述する。
- (void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];

 // setup *bar translucent
 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;
 self.wantsFullScreenLayout = YES;    // ステータスバーの背景も描画対象にする

 self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
 self.navigationController.navigationBar.translucent = YES;
 
 self.navigationController.toolbar.barStyle = UIBarStyleBlack;
 self.navigationController.toolbar.translucent = YES;

}

元に戻すコード
- (void)viewWillDisappear:(BOOL)animated {
 [super viewWillDisappear:animated];

 // restore *bar opacity
 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;

 self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
 self.navigationController.navigationBar.translucent = NO;

 self.navigationController.toolbar.barStyle = UIBarStyleDefault;
 self.navigationController.toolbar.translucent = NO;
}


参考情報


情報元は下記の本。この本は結構役に立つ。


「Unit 4.1 フルスクリーン」(P.120)

各バーがじわじわと透明になっていく(見えなくする)方法についても紹介されている。


 

4 件のコメント:

  1. self.navigationController.toolbar.translucent = YES;
    これ、UITableViewControllerの中でやると、iOS4.2だと挙動がおかしくなるみたいですね。
    ご注意を。

    返信削除
  2. やないっちさん、情報どうも。
    そうなんですね。iOS4.2入手したら試してみます。

    返信削除
  3. すいません、これをどこに打ち込めばいいのでしょうか…(

    また、これを打つことで写真アプリ以外も半透明になるということでいいのでしょうか?

    返信削除
  4. こんにちは。

    > すいません、これをどこに打ち込めばいいのでしょうか…(

     表示している画面で使っている UIViewControllerのサブクラスで
     使うと良いと思います。メソッドはブログに書かれている
      - (void)viewWillAppear:(BOOL)animated
     などです。

    > また、これを打つことで写真アプリ以外も半透明になるということでいいのでしょうか?

     今回の効果はコードを入れたアプリのみの効果になります。
     このコードを実行しても他のアプリ(写真アプリ、他)が
     半透明になるわけではありません。

    では。
     

    返信削除