[英]Status Bar showing black text, only on iPhone 6 iOS 8 simulator
我正在尝试将我的iOS 7应用程序转换为Xcode 6 GM中的iOS 8,当我在iOS 5或更低版本的iOS 8上运行它时,一切都很好,但在iPhone 6和6 Plus模拟器上,状态栏有黑色文字而不是白色,就像它随处可见。 我通过Xcode将Info.plist UIStatusBarStyle设置为“透明黑色样式(alpha of 0.5)”,这似乎在其他地方都有所需的效果。 有什么想法发生了什么?
(我还没有触及任何故事板,它可能是什么东西吗?我希望我能把它关掉一段时间:)
所以这就是我修复它的方法
在PLIST中查看基于控制器的状态栏否状态栏样式UIStatusBarStyleLightContent
在AppDelegate中DidFinishLaunching
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self.window setBackgroundColor:[UIColor whiteColor]];
在每个视图控制器中
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
如果您的应用程序正在缩放以适应新设备的分辨率,则只会出现此错误。
快速修复(谁知道这是否会在8.1中得到解决)是在应用包中提供正确的解决方案加载图像。
来自https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/
For iPhone 7, iPhone 6s, iPhone 6:
750 x 1334 (@2x) for portrait
1334 x 750 (@2x) for landscape
For iPhone 7 Plus, iPhone 6s Plus, iPhone 6 Plus:
1242 x 2208 (@3x) for portrait
2208 x 1242 (@3x) for landscape
在我的应用程序中,我们只支持肖像,因此提供750x1334和1242x2208修复它。
只是为了确认它不明显,你需要使用UIStatusBarStyleLightContent作为状态栏样式。
我的应用程序的状态栏在iOS 7中仅使用项目/目标设置正常工作:
Status bar style = UIStatusBarStyleLightContent
和
View controller-based status bar appearance = NO
但在iOS 8(iPhone 6和iPhone 6 Plus模拟器)中,状态栏没有显示出来。 将基于控制器的状态栏外观更改为YES,然后添加:
// Objective C
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
//Swift
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
到ViewController导致再次看到白色状态栏,但仅在初始根控制器启动后。 在初始启动期间,状态栏保持黑色。
一个类似的答案(目前被评为第二名)已经发布,为了保持这篇文章的最新信息而购买,这里是Swift版本。
在info.plist文件中添加一行,名为View controller-based status bar appearance ,并将其布尔值设置为NO 。
在AppDelegate.swift文件中,添加以下方法: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { UIApplication.sharedApplication().statusBarStyle = .LightContent return true }
我不需要执行此步骤以使其工作(即执行步骤1和2,它可能会起作用)。 如果没有,请尝试将以下方法添加到每个ViewControllers :
override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }
我希望这可以帮到你,
卢瓦克
完成。
在AppDelegate
的didFinishLaunchingWithOptions:
方法中添加以下行
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
第1步:打开应用程序的info.plist文件,并将UIViewControllerBasedStatusBarAppearance设置为NO
第2步:应用程序的info.plist文件,并将“状态栏样式”设置为UIStatusBarStyleLightContent
可能是模拟器的问题。 使用此选项可覆盖特定视图控制器的默认状态栏或状态栏。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
} //This is swift code
我知道使用类别覆盖基类中的行为是不好的方式,但这可行并且可能是解决它的最快解决方案。
步骤1:确保应用程序plist文件中的UIViewControllerBasedStatusBarAppearance
或View controller-based status bar appearance
设置为YES
。
步骤2:将以下代码添加到您的项目中:
@implementation UIViewController (StatusBarColorFix)
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
一个很好的解决方法是使用在iPhone 6模型上使用的新的启动图像笔尖支持。 似乎iOS 8中只有一个错误,这意味着iPhone 6型号在启动时不会正确检查状态栏样式,但如果添加启动笔尖则会解决。
正如Aaron Wasserman指出你也可以指定iPhone 6和6+发布PNG,这似乎也解决了这个问题,只要你设置正确!
在Storyboard中选择根视图控制器并将状态栏类型设置为default
我已经执行了以下步骤,它们对我很有用,也应该在iOS 8+中工作。
1)添加属性在Info.plist中查看基于控制器的状态栏外观 => 否 。
2)加入下列中的一段代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
AppDelegate.m的
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self.window setBackgroundColor:[UIColor redColor]]; // Change color as per need.
3) ViewController
覆盖方法
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
适用于swift 4和iOS 11
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
以下是有关状态栏/文本颜色更改的Apple指南/说明 。
这是 - 如何更改状态栏样式:
如果要设置状态栏样式,应用程序级别,请在“.plist”文件中将UIViewControllerBasedStatusBarAppearance
设置为NO
。
或者以编程方式,您可以从App Delegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
如果您要在视图控制器级别设置状态栏样式,请按照下列步骤操作:
.plist
文件中将UIViewControllerBasedStatusBarAppearance
设置为YES
。 在viewDidLoad中添加函数setNeedsStatusBarAppearanceUpdate
覆盖视图控制器中的preferredStatusBarStyle。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
根据状态栏样式设置级别设置.plist的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.