我尝试了很多方法来设置状态栏样式(默认或轻量级),但不能让它在每个视图控制器的基础上工作.我只能为整个应用设置状态栏样式.
有人有提示吗?
我试过了 UIViewControllerBasedStatusBarAppearance
和
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)
但这些方法不起作用.
Gre*_*reg 139
你试过这个吗?
在Info.plist中设置"查看基于控制器的状态栏外观"(UIViewControllerBasedStatusBarAppearance)YES.(YES是默认设置,因此您也可以将此值保留在plist之外.)
在viewDidLoad方法中,调用[self setNeedsStatusBarAppearanceUpdate].
实现preferredStatusBarStyle,返回此视图控制器所需的状态栏样式.
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)vis*_*kar 73
有一个陷阱在这里,如果你的视图控制器内独立的UINavigationController,而不是基于故事板的UINavigationController的一部分,那么上述所有方法都失败了.我遇到了这种情况然后为了将状态栏设置为我使用的轻型样式
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
Run Code Online (Sandbox Code Playgroud)
这对我很有用.
cau*_*maz 22
编辑:此解决方案在iOS 9上已弃用.请选择其他答案之一.
随着UIViewControllerBasedStatusBarAppearance设置为NO,我能够通过设置样式为白色文字:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;
Run Code Online (Sandbox Code Playgroud)
这是因为此样式的文本颜色在iOS 6及更低版本上为白色.
更新:根据@jowie,您可以在iOS8上尝试:
[UIApplication sharedApplication].statusBarStyle = UIBarStyleBlack;
Run Code Online (Sandbox Code Playgroud)
Fen*_*son 14
在Swift中,我能够通过编写:
let tbc : UITabBarController = self.window?.rootViewController as UITabBarController
var moreViewController : UINavigationController = tbc.moreNavigationController
moreViewController.navigationBar.barStyle = UIBarStyle.Black
Run Code Online (Sandbox Code Playgroud)
基本上你对最后一行很感兴趣.
这导致tabbar变为白色:

请注意,我没有更改任何内容Info.plist以实现此结果.
有关更改的更多信息Navigation Status Bar,请查看此链接:http:
//www.appcoda.com/customize-navigation-status-bar-ios-7/
小智 13
在viewDidLoad方法上,输入:
目标C.
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[self setNeedsStatusBarAppearanceUpdate];
Run Code Online (Sandbox Code Playgroud)
迅速
UIApplication.shared.statusBarStyle = .lightContent
self.setNeedsStatusBarAppearanceUpdate()
Run Code Online (Sandbox Code Playgroud)
我打赌你把你的视图控制器嵌入到导航控制器中.要避免设置导航栏的样式以.Black使用此子类:
class YourNavigationController: UINavigationController {
override func childViewControllerForStatusBarStyle() -> UIViewController? {
return topViewController
}
}
Run Code Online (Sandbox Code Playgroud)
迅速:
let tbc : UITabBarController = self.window?.rootViewController as UITabBarController
var moreViewController : UINavigationController = tbc.moreNavigationController
moreViewController.navigationBar.barStyle = UIBarStyle.Black
Run Code Online (Sandbox Code Playgroud)
目标C:
将此附加到controller.m文件viewDidLoad方法中:
[self setNeedsStatusBarAppearanceUpdate].
Run Code Online (Sandbox Code Playgroud)
然后在同一controller.m文件中实现此方法:
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)
官方文档:
我在博客上写的文章:
http://www.ryadel.com/2015/03/04/xcode-set-status-bar-style-and-color-in-objective-c/
| 归档时间: |
|
| 查看次数: |
88346 次 |
| 最近记录: |