Saya ingin sepenuhnya transparan UIToolbardan / atau UINavigationBar. Saya telah mencoba berbagai mantra yang disarankan untuk sebelum dan sesudah iOS 5 tetapi tampaknya tidak ada yang berhasil lagi.
Bagaimana ini bisa dilakukan di iOS 7?
Saya ingin sepenuhnya transparan UIToolbardan / atau UINavigationBar. Saya telah mencoba berbagai mantra yang disarankan untuk sebelum dan sesudah iOS 5 tetapi tampaknya tidak ada yang berhasil lagi.
Bagaimana ini bisa dilakukan di iOS 7?
Jawaban:
UIToolbarself.toolbar.setBackgroundImage(UIImage(),
forToolbarPosition: .any,
barMetrics: .default)
self.toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)
UINavigationBarself.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.isTranslucent = true
UIToolbarself.toolbar.setBackgroundImage(UIImage(),
forToolbarPosition: UIBarPosition.Any,
barMetrics: UIBarMetrics.Default)
self.toolbar.setShadowImage(UIImage(),
forToolbarPosition: UIBarPosition.Any)
UINavigationBarself.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.translucent = true
UIToolbar[self.toolbar setBackgroundImage:[UIImage new]
forToolbarPosition:UIBarPositionAny
barMetrics:UIBarMetricsDefault];
[self.toolbar setShadowImage:[UIImage new]
forToolbarPosition:UIBarPositionAny];
UINavigationBar[self.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;
Menyetel translucentke YESpada bilah navigasi melakukan trik, karena perilaku yang dibahas dalam UINavigationBardokumentasi. Saya akan melaporkan di sini fragmen yang relevan:
Jika Anda menyetel properti ini ke
YESpada bilah navigasi dengan gambar latar khusus buram, bilah navigasi akan menerapkan opasitas sistem kurang dari 1,0 ke gambar.

iOS 7simulator
Jika Anda ingin melakukannya melalui seluruh aplikasi, Anda harus menggunakan proxy UIApearance (iOS5 +):
UINavigationBar *navigationBarAppearance = [UINavigationBar appearance];
navigationBarAppearance.backgroundColor = [UIColor clearColor];
[navigationBarAppearance setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
navigationBarAppearance.shadowImage = [[UIImage alloc] init];
Artikel: http://nshipster.com/uiappearance/
UINavigationControllersubkelas tertentu — yaitu, subclass yang Anda inginkan agar perilaku ini diterapkan.
@implementation MyCustomNavigationBar
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setup];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setup];
}
return self;
}
- (void)setup {
[self setupBackground];
}
- (void)setupBackground {
self.backgroundColor = [UIColor clearColor];
self.tintColor = [UIColor clearColor];
// make navigation bar overlap the content
self.translucent = YES;
self.opaque = NO;
// remove the default background image by replacing it with a clear image
[self setBackgroundImage:[self.class maskedImage] forBarMetrics:UIBarMetricsDefault];
// remove defualt bottom shadow
[self setShadowImage: [UIImage new]];
}
+ (UIImage *)maskedImage {
const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [UIImage imageNamed:@"nav-white-pixel-bg.jpg"];
return [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];
}
@end