iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >iOS开发技巧之状态栏字体颜色的设置方法
  • 433
分享到

iOS开发技巧之状态栏字体颜色的设置方法

ios状态栏字体 2022-05-18 10:05:46 433人浏览 独家记忆
摘要

状态栏的字体为黑色:UIStatusBarStyleDefault 状态栏的字体为白色:UIStatusBarStyleLightContent 一、在info.plist中,将Vi

状态栏的字体为黑色:UIStatusBarStyleDefault

状态栏的字体为白色:UIStatusBarStyleLightContent

一、在info.plist中,将View controller-based status bar appearance设为NO

状态栏字体的颜色只由下面的属性设定,默认为白色:


// default is UIStatusBarStyleDefault
[UIApplication sharedApplication].statusBarStyle

解决个别vc中状态栏字体颜色不同的办法

在info.plist中,将View controller-based status bar appearance设为NO.

在app delegate中:


[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

在个别状态栏字体颜色不一样的vc中


-(void)viewWillAppear:(BOOL)animated{
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
}

-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
}

二、在info.plist中,将View controller-based status bar appearance设为YES,或者没有设置。

View controller-based status bar appearance的默认值就是YES。

如果View controller-based status bar appearance为YES。

[UIApplication sharedApplication].statusBarStyle 无效。

用下面的方法:

在vc中重写vc的preferredStatusBarStyle方法。


-(UIStatusBarStyle)preferredStatusBarStyle
{

return UIStatusBarStyleDefault;
}

在viewDidload中调用: [self setNeedsStatusBarAppearanceUpdate];

但是,当vc在nav中时,上面方法没用,vc中的preferredStatusBarStyle方法根本不用被调用。

原因是, [self setNeedsStatusBarAppearanceUpdate]发出后,

只会调用navigation controller中的preferredStatusBarStyle方法,

vc中的preferredStatusBarStyley方法跟本不会被调用。

解决办法有两个:

方法一:

设置navbar的barStyle 属性会影响status bar 的字体和背景色。如下。


//status bar的字体为白色

//导航栏的背景色是黑色。

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

//status bar的字体为黑色

//导航栏的背景色是白色,状态栏的背景色也是白色。

//self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

方法二:

自定义一个nav bar的子类,在这个子类中重写preferredStatusBarStyle方法:


MyNav* nav = [[MyNav alloc] initWithRootViewController:vc];

self.window.rootViewController = nav;

@implementation MyNav

- (UIStatusBarStyle)preferredStatusBarStyle

{

UIViewController* topVC = self.topViewController;

return [topVC preferredStatusBarStyle];

}

附:修改状态栏的背景颜色 (牵扯到UIWindow的层级关系)



UIView* stateView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, SCREEN_WIDTH, 20)];
[self.navigationController.navigationBar addSubview:stateView];
stateView.backgroundColor = [UIColor purpleColor];

备注: 因为在OC中,都应该知道UIWindow有三个层级,如下:

UIKIT_EXTERN const UIWindowLevel UIWindowLevelNORMal; UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert; UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar

它们层级的优先级的值分别对应的是:

UIWindowLevelNormal: 0

UIWindowLevelAlert: 1000

UIWindowLevelStatusBar:2000

(而且UIAlertView的层级优先级为1996,UIActionSheet的层级优先级为2001) 优先级

总结:

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程网的支持。

--结束END--

本文标题: iOS开发技巧之状态栏字体颜色的设置方法

本文链接: https://www.lsjlt.com/news/30159.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript设置字体颜色的方法
    这篇文章给大家分享的是有关javascript设置字体颜色的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。javascript设置字体颜色的方法:首先获取需要设置字体颜色的DOM元素对象;然后使用style对...
    99+
    2023-06-14
  • Android实现修改状态栏背景、字体和图标颜色的方法
    前言:Android开发,对于状态栏的修改,实在是不友好,没什么api可以用,不像ios那么方便.但是ui又喜欢只搞ios一套.没办法.各种翻源码,写反射.真的蛋疼.需求场景:当toolbar及状态栏需要为白色或浅色时(如简书),状态栏由于...
    99+
    2023-05-30
    android 状态栏 roi
  • css中设置字体颜色的方法
    这篇文章给大家分享的是有关css中设置字体颜色的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在CSS中,可以通color属性来设置字体颜色,只需要给包含字体文字的元素设置“color:颜色值;”样式即可。c...
    99+
    2023-06-14
  • css中font字体颜色的设置方法
    这篇文章给大家分享的是有关css中font字体颜色的设置方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网...
    99+
    2023-06-08
  • html设置字体颜色的方法是什么
    这篇文章主要介绍“html设置字体颜色的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“html设置字体颜色的方法是什么”文章能帮助大家解决问题。html设置字体颜色的方法:1、使用font...
    99+
    2023-07-05
  • Android 媒体开发之MediaPlayer状态机接口方法的示例分析
    这篇文章主要为大家展示了“Android 媒体开发之MediaPlayer状态机接口方法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android 媒体开发之MediaPlayer状...
    99+
    2023-05-30
    android mediaplayer
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作