失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 状态栏 (+强制修改状态栏颜色)/ 导航栏 / 底部导航Tabbar 常用设置

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

时间:2023-04-03 09:06:31

相关推荐

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

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;@endm文件#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 常用设置》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。