10

ナビゲーション バーの背景をUINavigationController単色に設定する方法はありますか?

色合いを変更できることはわかっていますが、それでもグラデーション/ガラス効果が残ります。

それを取り除く方法はありますか?

4

5 に答える 5

5

UINavigationBarをサブクラス化してオーバーライドする必要があると思います-(void)drawRect:(CGRect)rect

UIColor *colorFlat = /* any UIColor*/
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [colorFlat CGColor]);
CGContextFillRect(context, rect);
于 2012-04-24T18:43:23.853 に答える
0

以前は 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]; 
于 2014-02-17T14:20:36.207 に答える
0

次のコードは私のために働いた:

[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]];
于 2015-12-30T11:16:59.580 に答える
-4

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を使用します。

クレジット

于 2012-04-24T18:18:32.853 に答える