【问题标题】:Unable to make Navigation Bar totally transparent in iOS6无法在 iOS6 中使导航栏完全透明
【发布时间】:2012-11-12 05:10:55
【问题描述】:

我使用以下代码使我的导航栏在 iOS5 中透明:

const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [[UIImage alloc] init];
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];
[self.navigationController.navigationBar setBackgroundImage:maskedImage forBarMetrics:UIBarMetricsDefault];

升级到 iOS6 并且导航栏仍然是透明的,但现在它下面有一条细黑线。如何使导航栏完全透明?

我也尝试了以下所有方法:

self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.opaque = YES;
self.navigationController.navigationBar.tintColor = [UIColor clearColor];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

提前致谢。

【问题讨论】:

  • 您的图像蒙版是否有可能没有完全占据栏的高度,这会留下一个黑色的“空间”,您的 UINavigationBar 与视图不完全齐平?
  • 已解决。 iOS6 为导航栏添加了阴影。所以我在 iOS5 中使用的屏蔽代码仍然可以正常工作 - 我只需要添加 if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)]) { [self.navigationController.navigationBar setShadowImage:[[UIImage alloc]在里面]]; } 摆脱阴影。

标签: ios uikit ios6 uinavigationbar


【解决方案1】:

解决了。 iOS6 为导航栏添加了阴影。所以我在 iOS5 中使用的屏蔽代码仍然可以正常工作 - 我只需要添加

if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)]) 
{ 
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]]; 
} 

摆脱阴影。

【讨论】:

    【解决方案2】:
        self.navigationController.navigationBar.translucent = YES; // Setting this slides the view up, underneath the nav bar (otherwise it'll appear black)
        const float colorMask[6] = {222, 255, 222, 255, 222, 255};
        UIImage *img = [[UIImage alloc] init];
        UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];
    
        [self.navigationController.navigationBar setBackgroundImage:maskedImage forBarMetrics:UIBarMetricsDefault];
    //remove shadow
        [[UINavigationBar appearance] setShadowImage: [[UIImage alloc] init]];
    

    【讨论】:

      【解决方案3】:
       if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)])           
       { 
          [self.navigationController.navigationBar setShadowImage:[[[UIImage alloc] init] autorelease]]; 
          // autorelease is necessary, or else [[UIImage alloc] init]'s retainCount is 2.
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-26
        • 1970-01-01
        • 2016-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-05
        相关资源
        最近更新 更多