1.状态栏设置

全局设置状态栏:设置info.plist文件的View controller-based status bar appearance 选项 YES or NO

1.1.如果选择NO,则全局设置代码有效,分页设置代码无效

1.2.如果选择YES或者没有设置,则分页设置代码有效,代码全局设置代码无效

代码控制:

//设置状态栏的字体颜色模式
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//字体颜色只有两种选择
//设置状态栏是否隐藏
[[UIApplication sharedApplication] setStatusBarHidden:YES];

分页控制:

- (UIStatusBarStyle)preferredStatusBarStyle { //返回白色return UIStatusBarStyleLightContent;//返回黑色//return UIStatusBarStyleDefault;//例如 return self.isDownState ? UIStatusBarStyleLightContent : UIStatusBarStyleDefault;(在用的地方调用[self setNeedsStatusBarAppearanceUpdate]刷新)
}
- (BOOL)prefersStatusBarHidden {return YES;
}
[self setNeedsStatusBarAppearanceUpdate];//调用刷新

question:很多页面状态栏字体是黑色的,个别页面是白色的,怎么处理?

answer:在ViewController的基类加如下,要白色的页面自行处理

- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}

强制修改状态栏颜色:

UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {statusBar.backgroundColor = color;//例如color = [UIColor whiteColor]
}

2.导航栏设置

设置导航栏字体颜色:

NSDictionary* textAttrs = @{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont fontWithName:@"Helvetica"size:18.0],};
[self.navigationBar setTitleTextAttributes:textAttrs];

导航栏的显示和隐藏:

//self.navigationController.navigationBar.hidden = NO;
[self.navigationController setNavigationBarHidden:NO animated:YES];

注:有两种形式。区别:A页面(导航栏隐藏) -> B页面(导航栏显示),要用第二种,不然B页面手势返回时,中间过程很难看!!!

注2:A页面(导航栏隐藏) -> B页面(导航栏隐藏) / A页面(导航栏隐藏) -> C页面(导航栏显示) /A页面(导航栏隐藏) -> D页面(导航栏显示).....可以定义一个全局变量,在nav vc中控制,A/B页面个自写上,例如如下:

[GlobalVarClass sharedInstance].isMyNavAnimated
- (UIViewController *)popViewControllerAnimated:(BOOL)animated {UIViewController *viewController = [super popViewControllerAnimated:animated];if ([viewController isKindOfClass:[B class]]) {[GlobalVarClass sharedInstance].isMyNavAnimated = NO;} else {[GlobalVarClass sharedInstance].isMyNavAnimated = YES;   }return viewController;
}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {[super pushViewController:viewController animated:animated];if ([viewController isKindOfClass:[B class]]) {[GlobalVarClass sharedInstance].isMyNavAnimated = NO;} else {[GlobalVarClass sharedInstance].isMyNavAnimated = YES;}
}
- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];[self.navigationController setNavigationBarHidden:YES animated:[GlobalVarClass sharedInstance].isMyNavAnimated];
}
- (void)viewWillDisappear:(BOOL)animated {[super viewWillDisappear:animated];[self.navigationController setNavigationBarHidden:NO animated:[GlobalVarClass sharedInstance].isMyNavAnimated];
}

导航栏左右UIBarButtonItem:

1.图片+文字

UIButton *saveBtn = [UIButton buttonWithType:UIButtonTypeCustom];
saveBtn.frame = CGRectMake(5, 0, 60,44);
[saveBtn addTarget:self action:@selector(clickToSearch) forControlEvents:UIControlEventTouchUpInside];
[saveBtn setTitle:@"搜索" forState:UIControlStateNormal];
[saveBtn setImage:[UIImage imageNamed:@"searchIconGray"] forState:UIControlStateNormal];
[saveBtn setTitleColor:UIColorFromRGB(0x666666) forState:UIControlStateNormal];
UIBarButtonItem *saveItem = [[UIBarButtonItem alloc] initWithCustomView:saveBtn];
self.navigationItem.rightBarButtonItem = saveItem;

2.文字

UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"注册" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarItemClicked:)];
self.navigationItem.rightBarButtonItem = rightItem;

3.图片

UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"allGame_icon"] style:UIBarButtonItemStylePlain target:self action:@selector(didActionShowGameType)];
self.navigationItem.rightBarButtonItem = rightItem;

注:1,2,3可扩张包装到UIViewController+类文件中,例UIViewController+BarButtonItemBase中(2.3同理):

h文件
@interface UIViewController (BarButtonItemBase)
- (void)loadRightItemWithImage:(NSString *)image Title:(NSString *)title action:(SEL)action;
@end
m文件
#import "UIViewController+BarButtonItemBase.h"
@implementation UIViewController (BarButtonItemBase)
- (void)loadRightItemWithImage:(NSString *)image Title:(NSString *)title action:(SEL)action{UIBarButtonItem *saveItem;UIButton *saveBtn = [UIButton buttonWithType:UIButtonTypeCustom];saveBtn.frame = CGRectMake(5, 0, 60,44);[saveBtn addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];[saveBtn setTitle:title forState:UIControlStateNormal];[saveBtn setTitleColor:UIColorFromRGB(0x666666) forState:UIControlStateNormal];[saveBtn setImage:[UIImage imageNamed:image] forState:UIControlStateNormal];saveItem = [[UIBarButtonItem alloc] initWithCustomView:saveBtn];self.navigationItem.rightBarButtonItem = saveItem;
}
@end

状态栏 (+强制修改状态栏颜色)/ 导航栏 / 底部导航Tabbar 常用设置相关推荐

  1. 【Flutter】底部导航栏实现 ( BottomNavigationBar 底部导航栏 | BottomNavigationBarItem 导航栏条目 | PageView )

    文章目录 一.Scaffold 组件 二.底部导航栏整体架构 三.BottomNavigationBar 底部导航栏 四.BottomNavigationBarItem 导航栏条目 五.PageVie ...

  2. html导航图片滚动条,CSS实现导航栏底部动态滚动条效果

    预习了CSS3部分的新知识,想着在不使用JS的情况下实现导航栏滚动条效果,如下: 实现滚动条效果,其实就是在 标签中让元素的宽度由0变化到100%,代码很简单,如下所示: CSS样式部分: ul.na ...

  3. HBuilder开发旅游类APP(三) ----- 给APP添加底部导航栏(底部选项卡)

    HBuilder开发旅游类APP(三) ----- 给APP添加底部导航栏(底部选项卡) 作者:班尼科 本博文是本人原创,喜欢请给我点赞,转载请注明出处哦. 标签: 旅游 HBuilder H5+ M ...

  4. swift 获取导航栏底部线

    获取导航栏底部阴影线,设置隐藏(iOS 15.0 之前可用) iOS 15之后可用下面viewDidLoad方法里面的隐藏 swift override func viewDidLoad() {sup ...

  5. storyboard(故事版)新手教程 图文详解 1.创建一个无约束的导航栏加选项卡(tabbar)故事版

    OSX系统10.10.5 Xcode版本7.1 本文图文详解如何初步使用故事版进行开发 1.打开Xcode  点击Create a new Xcode project 选择Single View Ap ...

  6. android 自定义标签导航栏,自定义导航栏app下载-自定义导航栏(Custom Navigation Bar) 安卓版v0.4.3-PC6安卓网...

    自定义导航栏(Custom Navigation Bar)app是款非常好用的实用工具,自定义导航栏能让你自己设置个性的导航栏,再也不用为单调的导航栏而发愁,独特且唯一,感兴趣的朋友就来下载自定义导航 ...

  7. android获取刘海屏状态栏高度,Android刘海屏全面屏底部导航栏的适配

    关于Android状态栏和虚拟导航栏的适配,文章:https://blog.csdn.net/leogentleman/article/details/54566319 讲的很不错. 状态栏的适配: ...

  8. android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明

    首先我要区分清楚沉浸式状态栏与变色状态栏. 沉浸式状态栏指的是,状态栏隐藏,在手指做了相关操作后,状态栏显示出来,例如视频播放器,在播放视频时是隐藏状态栏的,但是点击屏幕的时候,状态栏会显示出来,再例 ...

  9. 沉浸式状态栏(修改状态栏)颜色的简单实现

    Google 推出MaterialDesign后,可以说极大的美化了Android的UI,开发者只需按照MaterialDesign的相关标准就能设计出炫酷的界面. 自从5.0推出后,Android就 ...

最新文章

  1. 你有一张邀请函:全球AI技术开发日南京站——9月8日走进地平线
  2. clear linux 图形界面,Clear Linux准备迁移到GNOME 3.36,放弃其桌面自定义设置
  3. 2017年我国SAP行业三大利好
  4. Bit-Z 项目评审中心开启首次投票币竞选
  5. Emscripten-mac安装与升级
  6. JavaScript 几种排序算法实现(冒泡、选择、插入、归并、快速排序)
  7. 您应该如何改变数据科学教育
  8. 何小鹏:雷军造车是我“怂恿的” 我一直建议小米要造车
  9. 怎么更改自己IP地址 切换电脑本机IP软软件哪个好用
  10. python输出日历_python输出指定月份日历的方法
  11. 【Python从入门到精通】(一)就简单看看Python吧
  12. 基于埋点日志数据的网络流量统计(网站独立访客数(UV)的统计)
  13. 用Python实现一个简易的“听歌识曲”demo(一)
  14. Android开发自定义View之仿米家APP双色灯控制UI:做一个智能家居产品的简单智能灯UI !(附带Demo)
  15. Flutter Checkbox 复选框
  16. eclipse3.6 太阳神版 中文汉化插件
  17. ARCore之路-技术原理(一)
  18. 【有趣的Python小程序】Python多个简单上手的库制作WalkLattice 走格子游戏 (思路篇)下
  19. BLM业务领导力模型
  20. 小程序和新零售,双双涉入深水区

热门文章

  1. linux查询jiffies命令,linux的jiffies
  2. 什么手机打游戏好?rog3 游戏发烧友的最爱!
  3. python手绘效果图_Python实现手绘图
  4. SVG_41_一篇10万+的文章效果_点击后展开画卷
  5. 后台架构实战——Spring框架搭建
  6. linux磁盘空间查看与清理
  7. 绘画大师、音乐达人……AI如何重新定义艺术?
  8. sql存储过程几个简单例子
  9. 铁蛋白-海藻酸钠纳米包埋ACE抑制肽|海藻酸钠修饰碳纳米管(SAL-MWNTs)
  10. 计算机技术在印刷中的应用,计算机在印刷中的应用