Kju*_*uly 65 cocoa-touch uikit ios ios7
我的应用程序的背景颜色是黑色.因为整个视图位于iOS 7上的状态栏下方,状态栏上的内容很难区分.那么如何将状态栏的内容颜色更改为白色?
我尝试preferredStatusBarStyle
了其他几种方法,但都失败了.
Kju*_*uly 190
插入
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
到-application:didFinishLaunchingWithOptions:
了AppDelegate.m的.
注意:UIStatusBarStyleDefault
是状态栏样式的默认值,它将显示黑色内容.这两个UIStatusBarStyleBlackTranslucent
&UIStatusBarStyleBlackOpaque
在iOS 7.0中已弃用.
正如@ZakariaDarwish所提到的,该方法-setStatusBarStyle
在iOS 9中已被弃用.(注意:很久以前就提出了iOS 7的原始问题,我现在不支持它,下面的新解决方案适用于iOS 9,因此更新这里.)
因此,剩下的唯一方法(至少现在)是-preferredStatusBarStyle
在视图控制器中实现(记得将"基于控制器的状态栏外观"设置回"是").
-setNeedsStatusBarAppearanceUpdate
一旦在-preferredStatusBarStyle
或中更改了值,就可以调用UIViewController的实例方法-prefersStatusBarHidden
.
有是也有两个方法-childViewControllerForStatusBarStyle
:-childViewControllerForStatusBarHidden
只要你想从子视图控制器返回首选风格.
例如,如果您使用以下方法
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
Run Code Online (Sandbox Code Playgroud)
要切换状态栏样式之前,可以使用下面的代码示例
- (void)shouldChangeStatusBarStyleToLightContent:(BOOL)toLightContent
animated:(BOOL)animated
{
_shouldChangeStatusBarStyleToLightContent = toLightContent;
if (animated) {
[UIView animateWithDuration:.3f animations:^{ [self setNeedsStatusBarAppearanceUpdate]; }];
} else {
[self setNeedsStatusBarAppearanceUpdate];
}
}
- (UIStatusBarStyle)preferredStatusBarStyle
{
return (_shouldChangeStatusBarStyleToLightContent ? UIStatusBarStyleLightContent : UIStatusBarStyleDefault);
}
Run Code Online (Sandbox Code Playgroud)
现在更新解决方案.
Sat*_*ito 68
在*-Info.plist文件中:
或者,您可以在目标的常规选项卡中将状态栏样式指定为"黑色不透明"或"黑色半透明"(在Xcode 5.0.1中)但它们是过时的值.
Den*_*hov 26
我在主控制器中使用它:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)
这里有一个简短的解决方案来设置状态栏颜色白色
1)首先将此行复制View controller-based status bar appearance
到.plist文件中并设置布尔值NO
;
2)在didFinishLaunchingWithOptions下的AppDelegate.m文件中粘贴此内容
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:NO];
Run Code Online (Sandbox Code Playgroud)
或者添加.plist
小智 6
iOS 9(不推荐使用的警告解决方法)
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
Run Code Online (Sandbox Code Playgroud)
#ifdef __IPHONE_7_0
# define STATUS_STYLE UIStatusBarStyleLightContent
#else
# define STATUS_STYLE UIStatusBarStyleBlackTranslucent
#endif
[[UIApplication sharedApplication] setStatusBarStyle:STATUS_STYLE animated:YES];
Run Code Online (Sandbox Code Playgroud)
如果您的应用程序具有每个视图控制器的不同状态栏的内容颜色,则首选方法将实现
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Run Code Online (Sandbox Code Playgroud)
如果您需要在整个应用程序中全局更改条形图的内容颜色,请在AppDelegate 中的didFinishLaunchingWithOptions方法中添加以下代码行
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarStyle = .lightContent
return true
}
Run Code Online (Sandbox Code Playgroud)
等待设置statusBarStyle在您的应用程序使用默认的基于UIViewController的状态栏系统时不执行任何操作.为了这
在info.list文件中将"查看基于控制器的状态栏外观"设置为NO
归档时间: |
|
查看次数: |
64091 次 |
最近记录: |