我试图将我的iOS 7应用程序转换为Xcode 6 GM中的iOS 8,当我在iOS 5或更低版本的iOS 8上运行它时一切都很好,但在iPhone 6和6 Plus上模拟器,状态栏有黑色文本而不是白色,就像任何时候其他地方一样。我已将Info.plist UIStatusBarStyle设置为"透明黑色样式(alpha为0.5)"通过Xcode,这似乎在其他地方都有所期望的效果。有什么想法发生了什么?
(我还没有接触到任何故事板,它可能与此有什么关系吗?我希望我可以把它关掉一段时间:)
答案 0 :(得分:50)
所以这就是我修复它的方法
在PLIST中 查看基于控制器的状态栏NO 状态栏样式UIStatusBarStyleLightContent
在AppDelegate DidFinishLaunching
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self.window setBackgroundColor:[UIColor whiteColor]];
在每个视图控制器中
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
答案 1 :(得分:42)
只有在缩放您的应用以适应新设备的分辨率时,才会出现此错误。
快速修复(谁知道这是否会在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作为状态栏样式。
答案 2 :(得分:16)
我的应用状态栏在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导致再次看到白色状态栏,但仅在初始根控制器启动后。在初始启动期间,状态栏保持黑色。
答案 3 :(得分:15)
一个类似的答案(目前被评为第二名)已经发布,为了保持这篇文章的最新信息而购买,这里是 Swift 版本。
在info.plist文件中添加一行名为查看基于控制器的状态栏外观,并将其布尔值设置为否。
< / LI>在 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
}
我希望这很有帮助,
卢瓦克
答案 4 :(得分:7)
完成。
答案 5 :(得分:6)
在AppDelegate
的{{1}}方法
didFinishLaunchingWithOptions:
答案 6 :(得分:6)
步骤1:打开应用的info.plist文件,并将UIViewControllerBasedStatusBarAppearance设置为NO
第2步:应用的info.plist文件,并将“状态栏样式”设置为UIStatusBarStyleLightContent
答案 7 :(得分:3)
可能是模拟器的问题。使用此选项可覆盖特定视图控制器的默认状态栏或状态栏。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
} //This is swift code
答案 8 :(得分:2)
我知道使用类别覆盖基类中的行为是不好的方式,但这可行,并且可能是解决它的最快解决方案。
第1步:
确保应用程序plist文件中的UIViewControllerBasedStatusBarAppearance
或View controller-based status bar appearance
设置为YES
。
步骤2:将以下代码添加到您的项目中:
@implementation UIViewController (StatusBarColorFix)
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
答案 9 :(得分:1)
一个很好的解决方法是使用在iPhone 6型号上使用的新的启动图像笔尖支持。似乎iOS 8中只有一个错误,这意味着iPhone 6型号在启动时不会正确检查状态栏样式,但如果添加启动笔尖则会解决。
正如Aaron Wasserman所指出,你也可以指定iPhone 6&amp; 6+推出PNG,这似乎也解决了这个问题,只要你把它们设置正确!
答案 10 :(得分:0)
在Storyboard中选择根视图控制器并设置状态栏类型默认
答案 11 :(得分:0)
我已经执行了以下步骤,它们对我很有用,也应该在iOS 8+中工作。
1)添加了属性查看基于控制器的状态栏外观 =&gt; Info.plist中的否 2)在 AppDelegate.m 的<{1}}中添加以下代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
3)覆盖 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self.window setBackgroundColor:[UIColor redColor]]; // Change color as per need.
ViewController
答案 12 :(得分:0)
对于swift 4和iOS 11
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
答案 13 :(得分:0)
以下是关于状态栏/文字颜色变化的Apple Guidelines/Instruction。
以下是 - 如何更改状态栏样式:
如果要设置状态栏样式,应用程序级别,然后在`.plist&#39;中将UIViewControllerBasedStatusBarAppearance
设置为NO
。文件。
或者以编程方式,您可以从App Delegate:
进行操作func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
如果您要在视图控制器级别设置状态栏样式,请按照以下步骤操作:
UIViewControllerBasedStatusBarAppearance
文件中将YES
设置为.plist
。 在viewDidLoad添加功能 - setNeedsStatusBarAppearanceUpdate
覆盖视图控制器中的preferredStatusBarStyle。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
根据状态栏样式设置级别设置.plist的值。