ナビゲーション バーの背景をUINavigationController
単色に設定する方法はありますか?
色合いを変更できることはわかっていますが、それでもグラデーション/ガラス効果が残ります。
それを取り除く方法はありますか?
ナビゲーション バーの背景をUINavigationController
単色に設定する方法はありますか?
色合いを変更できることはわかっていますが、それでもグラデーション/ガラス効果が残ります。
それを取り除く方法はありますか?
UINavigationBarをサブクラス化してオーバーライドする必要があると思います-(void)drawRect:(CGRect)rect
:
UIColor *colorFlat = /* any UIColor*/
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [colorFlat CGColor]);
CGContextFillRect(context, rect);
以前は drawRect メソッドをオーバーライドして色を塗りつぶしていました。しかし、iOS7 のアップグレード後、UINavigationBar でいくつかの問題が発生します。独自の drawrect メソッドを記述した場合、[super drawRect] を呼び出しても、バーの寸法が変更され、高さ 44 ピクセルのナビゲーション バーになってしまいます。ステータス バーは空のままです。
単色のナビゲーション バーを取得するために、画像を背景画像として使用し (小さい単色の画像は、拡大しているため、どんな画像でも構いません)、UINavigationBar サブクラスの initWithFrame メソッド内に次の行を追加しました。
[self setBackgroundColor:[UIColor clearColor]]
[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"bgimage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5) resizingMode:UIImageResizingModeStretch] forBarMetrics:UIBarMetricsDefault];
次のコードは私のために働いた:
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]];
self.navigationController.navigationBar.translucent = NO;
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
UIViewControllerを拡張し、 viewDidLoadを次のようにオーバーライドするCustomUIViewControllerを作成します。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.view.backgroundColor = [UIColor colorWithRed: 0.0 green: 0.0 blue: 1.0 alpha: 1.0];
}
その後、コントローラーでCustomUIViewControllerを使用します。