2009-05-11 7 views
4

iPhoneのアプリの戻るボタンとナビゲーションバー全体をカスタム画像で置き換えたいと思います。まず、これは可能ですか?第二に、もしそうなら、どのように?ありがとう。iPhoneのナビゲーションバーの画像

+1

カスタムナビゲーションバー上だけボタンの画像、または全体のNAVを意味しますかバー自体(背景など)? –

+0

私もボタンに興味があります=) – Pasta

答えて

17

このコードは、アプリケーションのすべてのUINavigationBarを変更します。

@implementation UINavigationBar (CustomImage) 
- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed: @"MyNavigationBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 
+0

これは答えとしてマークする必要があります。 –

+0

これはすばらしい、チップのおかげでよかった – Robert

+0

@pierre良い答え、例えばあなたがバックボタンを保持したい場合に備えて、superへの呼び出しを尋ねるべきです。 –

0

アップルのナビゲーションバーのルックアンドフィールを簡単に無効にすることはできません。できるだけ早く、プライベートAPIを避けるというポリシーに反する可能性があります。ただし、すべてのカスタムイメージを使用して、独自の外観のナビゲーションバーを作成するのは簡単です。これは、ナビゲーションバーを必要とする簡単な1回限りの画面ではうまくいくが、複雑なUINavigationControllerベースの階層に実装するための獣となる。

編集:-drawRectセレクタ:Custom background for UINavigationBar?をオーバーライドして、背景を変更できるように見えます。 App Storeの変更が承認されたかどうかの報告はありません。

+2

私は、このような練習を含む多くのアプリケーションが店で販売承認されていることを目の当たりにしました。 Appleは気にしない。 –

0

あなたのカスタムイメージにナビゲーションバー画像とタブバーの画像を変更するには、このコードを使用することができます:

if([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {//iOS >=5.0 
    UIImage *image = [UIImage imageNamed:@"myCustomImage.png"]; 

    CGSize newSize = CGSizeMake(self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height); 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect: CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height)]; 


    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    [self.navigationController.navigationBar setBackgroundImage:newImage forBarMetrics:UIBarMetricsDefault]; 

    [[UIToolbar appearance] setBackgroundImage:newImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
    [[UITabBar appearance] setBackgroundImage:newImage]; 
    [[UITabBar appearance] setSelectedImageTintColor:[UIColor cyanColor]]; 
}