2012-04-24 6 views
8

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

私はティントの色を変えることができますが、それでもグラデーション/ガラス効果が残ります。

私はそれを取り除くことができますし、ちょうど平凡な古い単色がありますか?

答えて

5

は、私はあなたがUINavigationBarをサブクラス化し、オーバーライドすることがあると思う-(void)drawRect:(CGRect)rect

UIColor *colorFlat = /* any UIColor*/ 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetFillColorWithColor(context, [colorFlat CGColor]); 
CGContextFillRect(context, rect); 
+0

ありがとう。魅力のように動作します。ボタンの色を設定するには、ナビゲーションバーの色合いを変更し、色合いを取得しました。ちょうど私が期待した通り。 – MartinHN

+0

アピアランス・プロキシ経由で可能かどうか知っていますか? '[[UINavigationBar appearance] .....];' – MartinHN

+0

外観が利用できないときにiOS 4.2のプロジェクトでこのコードを使用します。 –

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

Credits

+0

画像なしではできませんか? – MartinHN

+0

Shure、間違って申し訳ありません:[UIColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:1.0] – kcho0

+0

運がいいです。ナビゲーションバーの背景を設定してはいけませんか?例えば'self.navigationController.navigationBar.backgroundColor'?どちらも動作しません:) – MartinHN

46

次のコードは、ナビゲーションバーのソリッドカラーになり:私はオーバーライドするために使用

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearance] setBackgroundColor:[UIColor redColor]]; 
+2

色の濃さを設定してください。または、ナビゲーションバーのボタンは色を取得しません。[[UINavigationBar appearance] setTintColor:[UIColor redColor]]; –

+0

これはどこですか?私はナビゲーションバーでビューコントローラのviewDidLoadでそれをやろうとしていて、それは有効に見えません。それはいつか早く完了する必要がありますか?私はそれを上書きしているようなストーリーボードを持っています。 – David

+0

David、あなたがビューを提示する前に完了しなければなりません。 「外観」を設定しても表示されるビューは更新されません。これをグローバルに設定したい場合は、アプリケーションの中で実行するのが最適な場所です:didFinishLaunchingWithOptions :. – Lubiluk

0

drawRectメソッドと塗りつぶしの色。 iOS7のアップグレード後、UINavigationBarにいくつかの問題が発生します。あなた自身のdrawrectメソッドを書くと、たとえ[super drawRect]を呼び出しても、バーの寸法が変わり、高さ44ピクセルのnavigationBarで終わります。ステータスバーは空のままです。ソリッドカラーnavigationBarを取得するには

は、私は、背景画像として画像を使用し(あなたがそれを伸ばしているので、どんな小さな単色の画像が行います)とUINavigationBarサブクラスのinitWithFrameメソッドの内部で、この行を追加:

[self setBackgroundColor:[UIColor clearColor]]  
[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"bgimage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5) resizingMode:UIImageResizingModeStretch] forBarMetrics:UIBarMetricsDefault]; 
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]]; 
関連する問題