2015/07/14

ナビゲーションバーの高さを変更する


Storyboardで作成した画面のナビゲーションバーの高さを変更したくて色々調査したので、結果をまとめておきます。

  • まず、storyboardで画面遷移を定義します。
    当然 Navigation Controllerを配置します。

  • NavigationBarのカスタムクラスを作成します。

-sizeThatFits: でNavigationBarのサイズを返します。
defaultのheightは 44.0 です。

また、高さを拡大すると、すべてのsubviewの上部分がその分だけ空いてしまうので、NavigationBarの中央に来るよう位置を変更します。

@implementation XXCustomNavigationBar

- (CGSize)sizeThatFits:(CGSize)size
{
  CGSize barSize = [super sizeThatFits:size];
  barSize.height += 20.0f; // 高さを変更
  return barSize;
}

- (void)layoutSubviews
{
  [super layoutSubviews];

  // vertically center
  float centerY = self.bounds.size.height / 2.0f;
  for (UIView *view in self.subviews) {
    // 位置変更
    CGPoint center = view.center;
    center.y = centerY;
    view.center = center;
  }
}
@end
  • 作成したカスタムクラスをNavigation Controllerに紐付けます

Storyboard にて Navigation Controller Scene -> Navigation Controller -> Navigation Bar を選択します。

Custom Class で 作成したカスタムクラス (この例では XXCustomNavigationBar) を指定します。


これで実行すると、Navigation Barが指定した高さで表示されるはずです。


0 件のコメント:

コメントを投稿