iOS开发技巧 - 一行代码修改导航栏及状态栏的透明度
2017-07-23 16:17
393 查看
在以前,我们可以通过当前控制器的导航控制器再获取到navigatioBar导航条,修改导航条的barTintColor这个属性去修改它的透明度,如:
但如果是沉浸式背景,那么状态栏statusBar的白色/黑色背景又会和导航栏出现颜色不同,因此我们还得同时修改statusBar的背景颜色,如:
也可以给导航栏直接设置一个半透明的背景图片,通过color生成半透明图,这个网上很多分类,就不介绍了。
取巧可以用另外一种设置方式:
PS:如果不起作用 或者 别的控制器将导航栏上面的东西改了回去…
我们可能需要设置下面两个参数,在viewWillAppear方法中加上这两行代码,再结合上面的方法修改透明度。
效果如下:
self.navigationController.navigationBar.barTintColor = [UIColor colorWithWhite:1.0 alpha:0.5];
但如果是沉浸式背景,那么状态栏statusBar的白色/黑色背景又会和导航栏出现颜色不同,因此我们还得同时修改statusBar的背景颜色,如:
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"]; if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) { statusBar.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5]; }
也可以给导航栏直接设置一个半透明的背景图片,通过color生成半透明图,这个网上很多分类,就不介绍了。
下面才是重点啊喂~!
在iOS10之后,navigationBar的barTintColor方法设置一个半透明颜色不起作用了!取巧可以用另外一种设置方式:
[[[self.navigationController.navigationBar subviews] objectAtIndex:0] setAlpha:0.5]; //找到navigationBar的背景view,然后设置alpha值,这样会连statusBar背景一并修改了
PS:如果不起作用 或者 别的控制器将导航栏上面的东西改了回去…
我们可能需要设置下面两个参数,在viewWillAppear方法中加上这两行代码,再结合上面的方法修改透明度。
self.navigationController.navigationBar.translucent = YES; // 设置导航栏为有点透明的效果(系统给的),注意如果设置了这个参数,控制器中有scrollView的可能会向上偏移64px,也就是回到默认会被导航栏遮住的位置 self.navigationController.navigationBar.backgroundColor = [UIColor clearColor]; // 将导航条背景改为透明
效果如下:
相关文章推荐
- iOS开发技巧 - 一行代码修改TabBar图标渲染颜色
- ios 开发超实用技巧:Xcode里批量修改 || 工程名 || 变量名 || 修改类名 || 自动封装代码Refactor功能
- iOS开发一行代码系列:一行搞定数据库
- (iOS开发)iOS 9之后状态栏修改的方式
- iOS开发技巧--禁止系统头文件被不小心修改
- IOS开发之Bug--使用xib的自动布局和代码中修改遇到的bug
- iOS开发技巧 -- 复用代码片段
- iOS开发技巧 -- 复用代码片段
- iOS开发之 一行命令统计iOS工程代码总行数
- iOS开发技巧 -- 复用代码片段
- iOS开发技巧 -- 复用代码片段 推荐
- iOS开发技巧--修改app名称
- iOS开发之隐藏导航栏线的简单代码
- iOS开发技巧:设置App icon图标及修改应用程序名
- iOS开发技巧 -- 复用代码片段
- iOS开发:状态栏和导航栏的高度获取
- iOS开发的九宫格技巧+示例代码
- iOS开发 纯代码适配技巧 baseViewController
- iOS开发技巧:使用Objective-C创建UUID的代码
- iOS开发技巧(系列十四:iOS7导航栏和iOS6的区别)