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

只是一个提示,对于 iOS 5,您可以使用新appreance属性来设置背景图像:

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

这将为UINavigationBar应用程序中的所有 s 设置图像。

于 2012-05-10T10:14:37.713 回答
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 回答