如果部署目标低于iOS 7,状态栏样式轻量级内容?

时间:2014-01-06 22:17:02

标签: ios objective-c statusbar

在我正在开发的应用程序中,我很遗憾不得不使用iOS 6作为我的部署目标(iOS 7是我的基础SDK)。我有什么方法可以拥有UIStatusBar风格的Light Content吗?即使它只适用于iOS 7用户。

2 个答案:

答案 0 :(得分:1)

在代码中指定UIStatusBarStyleLightContent时,在iOS 6或更早版本下运行时,就像指定UIStatusBarStyleBlackTranslucent一样。这两个枚举值都是相同的。

答案 1 :(得分:1)

这是UIStatusBarStyle的枚举:

typedef NS_ENUM(NSInteger, UIStatusBarStyle) {
    UIStatusBarStyleDefault                                     = 0, // Dark content, for use on light backgrounds
    UIStatusBarStyleLightContent     NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds
    UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
    UIStatusBarStyleBlackOpaque      NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
};

我们可以从中看到UIStatusBarStyleLightContentUIStatusBarStyleBlackTranslucent的值相同,因此如果使用其中任何一个,这些将是iOS 6和7上的相应行为。

如果您愿意,您可以使用代码来检测iOS版本,并在两者之间选择不同的值,以防您想要iOS 7上的轻量级内容样式,但在iOS 6上需要黑色不透明或默认值。

此外,现在有一个属性添加到名为UIViewControllerBasedStatusBarAppearance的Info.plist中,这样就可以使用- (UIStatusBarStyle)preferredStatusBarStyle方法根据UIViewController的首选项更改样式。因此,您只需在UIViewController子类中使用您在特定位置所需的样式覆盖该方法。