1

iOS 5 と Xcode 4.2 にアップグレードした後、設計上の問題が少しあります

これは私のビューが iOS 4 でどのように見えるかです:

1 http://casperslynge.dk/1

iOS 5 では次のようになります。

2 http://casperslynge.dk/2

私のナビゲーションデリゲートには、上部に「画像」を描画する次のメソッドがあります。

- (void)drawRect:(CGRect)rect {
    UIImage *image;
    if(self.barStyle == UIBarStyleDefault){
        image = [UIImage imageNamed: @"topbar_base.png"];
    }
    else{
        image = [UIImage imageNamed: @"nyhedsbar_base.png"];    
    }
    [image drawInRect:CGRectMake(-1, -1, self.frame.size.width+3, self.frame.size.height+3)];
}

そして、コントローラー内で次のように設定しました。

self.navigationBarStyle = UIBarStyleBlack;

iOS 5 で動作しないのはなぜですか?

ありがとう

4

1 に答える 1

6

iOS5 では、 を使用する必要がありますUIAppearance。それを見てください。iOS4 を引き続きサポートできるように、条件付きで使用する例を次に示します。

// iOS5-only to customize the nav bar appearance
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {
    UIImage *img = [UIImage imageNamed: @"NavBarBackground.png"];
    [[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
}

ご覧のとおり、これにより、すべてのUINavigationBar のカスタム背景画像が設定されます。UIAppearance でできることはたくさんあります。drawRect:iOS4 より前のデバイスは、新しい UIAppearance コードではなくそれを引き続き使用するため、現在行っているカスタム内容を保持する必要があります。

于 2011-10-18T17:34:15.860 に答える