直接上代码
[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;
}
}
前面两句是设置透明的顶部导航栏,效果应该为:
但是有时候因为导航视图切换的时候,会导致图层_UIBarBackground也是有颜色,一般与控制器的背景色相同。
所以还需要将其_UIBarBackground图层设置为透明。