iOS 修改状态栏preferredStatusBarStyle不执行问题

一、在老版本的iOS中,状态栏永远都是白色风格。而在iOS 7中,我们可以修改每个view controller中状态栏的外观。通过UIStatusBarStyle常量可以指定状态栏的内容是暗色或亮色。默认情况下,状态栏的显示是暗色。也就是说,状态栏上的时间、电池指示器和Wi-Fi信号显示为暗色。如果导航栏中使用暗色为背景,那么看起来的效果如下图所示:

如上图这种情况下,我们可能希望将导航栏的风格修改为亮色。这里有两个方法可以实现。在iOS 7中,我们可以在每个view controller中overridingpreferredStatusBarStyle:方法,如下所示:

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

PS:此法的只有在设置了以下代码才会被调用(对于preferredStatusBarStyle不执行问题):

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];

上面代码的效果如下图所示:

二、在iOS 7中,通过上面的方法来修改状态栏风格非常的棒。另外,我们也可以使用UIApplication的statusBarStyle方法来设置状态栏,不过,首先需要停止使用View controller-based status bar appearance。在project target的Info tab中,插入一个新的key,名字为View controller-based status bar appearance,并将其值设置为NO。

然后就可以使用下面的代码来设置状态栏风格了:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

  

时间: 2024-10-20 06:34:10

iOS 修改状态栏preferredStatusBarStyle不执行问题的相关文章

IOS 修改状态栏颜色

默认状态栏是黑色,一般都会改变成白色,状态栏有好几种颜色,黑色,白色,灰色等,都是用枚举类表示,所以只懂修改一种,其他都会, //修改状态栏颜色     //在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO.还有下面一行代码     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

iOS 修改状态栏字体颜色(亲测,好用)

有时候我们需要根据不同的背景修改状态栏字体的颜色,我的方法比较复杂,如果有更好用的方法欢迎大家提出来,我会持续更新的.#方法一1.首先是设置info.plist 文件: 将View controller-based status bar appearance 的值设置为NO.2.在AppDelegate.m 的方法中如下设置,默认会显示黑色等于为你的app状态栏设置一个主颜色 - (BOOL)application:(UIApplication *)application didFinishLa

iOS 修改状态栏字体的颜色

在实际开发中,状态栏有时,需要我们自己设置: 比如: 默认状态栏 假如我们开发的view是黑色的,那么效果如图: 状态栏是白底黑字,下面的view是黑底? 这样子真的好吗?说好的和谐社会呢?说好的开发就是艺术呢? 所以最好的效果是 view的底色和状态栏的比较和谐点: 如何改变状态栏的颜色呢? 1 .首先在工程的Supporting Files文件夹中 info.plist  中,将 View-based status bar appearance  设为 NO 2.在对应的viewcontro

李洪强iOS开发之-修改状态栏的字体的颜色

李洪强iOS开发之-修改状态栏的字体的颜色 修改的效果: -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [_magicController.view setFrame:CGRectMake(0, 0, CFScreenW, self.view.height-120)]; if ([UIApplication sharedApplication].statusBarStyle != UIStatusBar

iOS 更改状态栏、导航栏颜色的几种方法

ios上状态栏 就是指的最上面的20像素高的部分状态栏分前后两部分,要分清这两个概念,后面会用到: 前景部分:就是指的显示电池.时间等部分:背景部分:就是显示黑色或者图片的背景部分: (一)设置statusBar的[前景部分] 简单来说,就是设置显示电池电量.时间.网络部分标示的颜色, 这里只能设置两种颜色: 默认的黑色(UIStatusBarStyleDefault)白色(UIStatusBarStyleLightContent)可以设置的地方有两个:plist设置里面 和 程序代码里初始化设

修改状态栏的文字颜色和背景色

一.修改状态栏文字颜色 这里修改文字颜色分两种情况 (1)导航栏是隐藏状态 如果导航栏为隐藏状态 可以直接在控制器中重写如下方法 // 重写方法 状态栏白色 - (UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; } 这样状态栏的文字就可以变成白色了 (2)导航栏不是隐藏状态 如果导航栏不是隐藏状态 会发现方法(1)没有作用了这时要采用第二种方法, 一共有两个步骤1 -> 设置info.p

修改状态栏的颜色

/** *  修改状态栏颜色 *  UIStatusBarStyleDefault 默认黑色,在浅色的背景上使用 *  UIStatusBarStyleLightContent 亮白,在深色的背景上使用 *  UIStatusBarStyleDefault IOS7之后淘汰 *  UIStatusBarStyleDefault IOS7之后淘汰 * */ - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLi

{"集合已修改;可能无法执行枚举操作。"}

无论是向集合中添加元素还是从集合中删除元素,都会导致集合内部的变化,特别是集合遍历器的变化.例如 List<int> list = new List<int>{1,2,3,4,5}; foreach(int x in list) { list.Remove(x); //将引发异常:{"集合已修改:可能无法执行枚举操作."} } 使用foreach不能执行删除.修改,这是规定.你可以使用for循环遍历修改. 如果你是删除的话,for循环 i 要从大到小,比如: f

LigerUi-Js中Grid行修改时,不执行保存事件的原因?(已解决)

(1) (2)下面代码写在grid上面 function itemclick1(item) { var editingrow = grid.getEditingRow(); switch (item.text) { case "增加": if (editingrow == null) { grid.addEditRow(); } else { LG.tip('请先提交或取消'); } break; case "修改": var selected = grid.get