iOS 顶部导航栏设置透明

直接上代码

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];
for (UIView *subview in self.navigationController.navigationBar.subviews) {
    if ([NSStringFromClass([subview class]) containsString:@"_UIBarBackground"]) {
       subview.hidden = YES;
       subview.backgroundColor = [UIColor clearColor];
       break;
    }
}

前面两句是设置透明的顶部导航栏,效果应该为:
 

iOS 顶部导航栏设置透明_第1张图片

iOS 顶部导航栏设置透明_第2张图片

但是有时候因为导航视图切换的时候,会导致图层_UIBarBackground也是有颜色,一般与控制器的背景色相同。

iOS 顶部导航栏设置透明_第3张图片

所以还需要将其_UIBarBackground图层设置为透明。

 

 

 

 

你可能感兴趣的:(iOS,ios,xcode)