iOS6

2012-11-12 7 views
7

でナビゲーションバーが完全に透明にすることができません。私はiOS5を中に私のナビゲーションバーを透明にするには、次のコードを使用していた:iOS6とナビゲーションバーにアップグレードiOS6

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]; 

はまだ透明であるが、今細い黒を持っていますその下の線。ナビゲーションバーを完全に透明にするにはどうすればよいですか?

私はまた、次のすべてを試してみました:事前に

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]; 

感謝を。

+0

それはあなたのイメージのマスクが完全にこれはあなたのUINavigationBarはかなりビューと面一に付属していません黒「スペース」を残して、バーの高さを取っていないことは可能ですか? – CodaFi

+0

解決済み。 iOS6はナビゲーションバーにドロップシャドウを追加しました。したがって、iOS5で使用していたマスキングコードは正常に動作します。if([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)]){ [self.navigationController.navigationBar setShadowImage:[[UIImage alloc ] その中に]]; }を使用してドロップシャドウを削除します。 –

答えて

6

解決済み。 iOS6はナビゲーションバーにドロップシャドウを追加しました。だから、iOS5で使用していたマスキングコードは正常に動作しています - 追加する必要があります。

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

ドロップシャドウを取り除くには、

1
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. 
} 
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]];