UINavigationBar
以外のメソッドを含まないのサブクラスを作成しますdrawRect:
。必要に応じてカスタム描画コードを配置し、そうでない場合は空のままにします (ただし、実装します)。
次に、UINavigationController
のナビゲーション バーをこのサブクラスに設定します。コードで使用するinitWithNavigationBarClass:toolBarClass:
か、ストーリーボード/ニブを使用している場合は Interface Builder で変更します (横の階層にある UINavigationController のサブクラスです)。
最後に、ナビゲーション バーへの参照を取得して、含まれているビュー コントローラーを使用self.navigationController.navigationBar
して構成できるようにします。loadView
ナビゲーション バーtranslucent
をYES
およびbackgroundColor
に設定し[UIColor clearColor]
ます。以下の例。
//CustomNavigationBar.h
#import <UIKit/UIKit.h>
@interface CustomNavigationBar : UINavigationBar
@end
//CustomNavigationBar.m
#import "CustomNavigationBar.h"
@implementation CustomNavigationBar
- (void)drawRect:(CGRect)rect {}
@end
//Put this in the implementation of the view controller displayed by the navigation controller
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBar.translucent = YES;
[self navigationController].navigationBar.backgroundColor = [UIColor clearColor];
}
Plague を模倣した結果のスクリーン ショットを次に示します。
drawRect:
ボタンとラベルだけでなく、UINavigationBar があることを示すために、青い境界線が描かれています。sizeThatFits:
バーを高くするためにサブクラスに実装しました。ボタンとラベルは両方とも、UIBarButtonItems としてバーに配置された正しい UI 要素を含む UIView です。最初にそれらをビューに埋め込んで、垂直方向の配置を変更できるようにしました(そうしないと、実装したときに下に「スタック」しましたsizeThatFits:
)。