2012-02-16 7 views
1

は、だから私は、UINavigationControllerのカテゴリを持っており、(白)空白になるために、ナビゲーションバーの背景画像を引き起こしUINavigationBar - 背景イメージを設定しますか?

- (id)initWithFrame:(CGRect)frame 
{ 
    if (self = [super initWithFrame:frame]) 
    { 
      UIImage *image = [UIImage imageNamed:@"navBar.png"]; 
      [[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];  
    } 

     return self; 
} 

次のコード下記のように私は、initメソッドをオーバーライドします。 イメージ名が正しく、プロジェクト内に存在します。この問題の原因は何ですか?

答えて

4

あなたはiOS4をを使用する場合は、上書きすることができます - (ボイド)

@implementation UINavigationBar (UINavigationBarCategory) 

- (void)drawRect:(CGRect)rect 
{ 
    UIImage *navBg = [UIImage imageNamed:@"navBar.png"]; 
    [navBg drawInRect:rect]; 
} 
@end 

のiOS 5、

if ([[UIDevice currentDevice].systemVersion floatValue] >= 5.0) { 
    if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]){ 

     UIImage *navBarImg = [UIImage imageNamed:@"navBar.png"]; 

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

    } 
} 
+0

をのdrawRectと、このリンクはあなた http://stackoverflow.com/questions/を助けるかもしれません5272451/overriding-methods-using-objectives-c-categories-in-c-c – looyao

+0

したがって、iOS4のメソッドはiOS5では機能しませんか? – karim

関連する問題