0

iOS 4.3で透明としてレンダリングされるデフォルトのステータスバーを置き換えるために使用しているpng画像の透明ビットを取得するのに、いくつかの問題があります。現時点では、彼らは黒くなっています。

画像の描画に使用しているコードは次のとおりです。

@implementation UINavigationBar (BackgroundImage)
    - (void)drawRect:(CGRect)rect 
    {
        UIImage *image = nil;

        switch(self.tag)
        {
            case HeaderBG_Logo:
                image = [UIImage imageNamed: @"top_bar_logo.png"];
                break;
            case HeaderBG_Plain:
                image = [UIImage imageNamed: @"top_bar.png"];
                break;
        }

        if(image != nil)
        {
            [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
        }

    }
@end

これは、ios4.3とios5のシミュレーターで実行されている同じアプリを並べて比較したものです(画像の下部の境界線にドロップシャドウがあります)。 スクリーンショット

余談ですが、4.3の背景画像も5.0の画像ほど高くレンダリングされていないようです。

UINavigationBarを不透明に設定/背景色をに設定してみましたclearColor。それはどれもうまくいきませんでした。:(

誰か助けてもらえますか?

4

3 に答える 3

1

代わりにUINavigationBar ドロップ シャドウを作成する方法のソリューションを使用して、代わりにシャドウを追加しましたUINavigationBar

于 2012-05-10T10:47:46.617 に答える
0

ステータスバーとナビゲーションバーのどちらに関心があるのか​​わかりません。あなたの質問によると、あなたはナビゲーションにもっと関心があるようですので、iOS5とiOS4の背景画像を追加するために私が働いたサンプルコードがあります。透明なpngで動作します。

これをviewControllerのloadViewメソッドに追加するだけです。

#define kBackgroundImageTag 42

UINavigationBar *theNavigationBar = self.navigationController.navigationBar;
UIImage *myBackgroundImage = [UIImage imageNamed:@"myImage.png"];

if([theNavigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) //iOS5 stuff
{
     [theNavigationBar setBackgroundImage:myBackgroundImage forBarMetrics: UIBarMetricsDefault];

}
else if(![theNavigationBar viewWithTag:kBackgroundImageTag]) //iOS 4 stuff
{
     UIImageView *imageView = [[UIImageView alloc] initWithImage:myBackgroundImage];
     imageView.tag = kBackgroundImageTag;
     [theNavigationBar insertSubview:imageView atIndex:0];
}

それが役に立てば幸い !

于 2012-05-10T10:29:23.727 に答える
0

iOS 5 の場合、新しいappreanceプロパティを使用して背景画像を設定できます。

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"top_bar.png"] forBarMetrics:UIBarMetricsDefault];

UINavigationBarこれにより、アプリ内のすべての の画像が設定されます。

于 2012-05-10T10:14:37.713 に答える