所以在iOS 13之前,我正在设置NavigationController。导航栏。BarStyle可控制状态栏中文本的颜色。但是现在有了新的航空航天飞机,有没有办法控制它呢?我已经尝试覆盖preferedStatusBarStyle,并确保我的plist也包含该设置,但据我所知,如果您的视图控制器位于UINavigationController中,这是不荣幸的。
现在,对于iOS 13,我将使用UINavigationBarAppearance设置导航栏的外观,并设置标准外观和滚动外观。
我还试图设置NavigationController。导航栏。从BarStyle到UIBarStyle。黑色它第一次起作用,但由于某种原因,当我返回并再次导航到页面时,设置BarStyle不再有任何效果。
设置文本颜色的正确方法是什么?
在Info中。plist
,如果添加了布尔属性UIViewControllerBasedStatusBarAppearance
,并将其值设置为False
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
您可以通过以下方式更改StatusBar文本颜色:
UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);
此外,此方法应在View完全加载后调用。在IOS 13中,Apple将UI
与Controller
分开,这可能会影响Controller中PreferredStatusBarStyle
的外观。在处理此问题之前,您可以使用UIApplication. SharedApplication. StatusBarStyle
来设置它。
可以使用此扩展名更改状态栏文本颜色:
extension UIApplication {
enum ColorMode {
case dark, light, customColorLowerThanIOS13(_ color: UIColor)
}
func setStatusBarTextColor(_ mode: ColorMode) {
if #available(iOS 13.0, *) {
guard let appDelegate = delegate as? AppDelegate else { return }
var style: UIUserInterfaceStyle
switch mode {
case .dark:
style = .dark
default:
style = .light
}
appDelegate.window?.overrideUserInterfaceStyle = style
} else {
if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
var color: UIColor
switch mode {
case .dark:
color = .white
case .light:
color = .black
case .customColorLowerThanIOS13(let customColor):
color = customColor
}
statusBar.setValue(color, forKey: "foregroundColor")
}
}
}
}
使用:
UIApplication.shared.setStatusBarTextColor(.dark)
UIApplication.shared.setStatusBarTextColor(.light)
UIApplication.shared.setStatusBarTextColor(.customColorLowerThanIOS13(.red))
酒吧风格在有限的条件下仍然有效。您可以使用barStyle或UIBarAppearance,但不能同时使用两者,如果使用大标题,则不能使用barStyle。
当然,你可以通过子类化UINavigationController来简单地解决这个问题。
override var childForStatusBarStyle : UIViewController? {
return self.topViewController
}
不过,在iOS 13中,你需要做的是不使用状态栏样式,让它根据用户界面样式(亮或暗模式)自动更改。在亮模式下使用亮条颜色,在暗模式下使用暗条颜色,一切都会好起来。
第8条。1(xcode 6.1)我使用下面的方法来更改状态栏文本的颜色。 不调用链接preferredStatusBarStyle 但这对我不起作用。任何人都知道如何更改与uinavigationcontroller相关的状态栏颜色。
如附图所示,状态栏文本为黑色。有没有办法换另一种颜色,比如白色?
因此,我在这里读了几篇关于更改状态栏文本颜色的帖子,但都没用。所以我最初的问题是,状态栏现在在iOS7中是透明的,我希望它是带黑色文本的白色。所以我把它添加到我的viewcontroller中。 好的,现在状态是黑对黑,不能阅读文本,但至少它不是透明的。所以现在我做了下面的事情。 进入plist并添加了这个 然后我将此添加到我的应用程序委托 现在我有一个状态栏是白色的,但是文本是白色的,所以你看不
状态栏文字颜色 sdk状态栏文字的颜色可以设置为白色或者黑色 , 设置方法如下: /** @param isDark true为黑字模式, false为白色模式 */ Ntalker.getInstance().statusBarDarkMode(boolean isDark);
问题内容: 我的应用程序具有深色背景,但是在iOS 7中状态栏变为透明的。所以我看不到任何东西,只有角落的绿色电池指示灯。如何将状态栏文本颜色更改为白色,就像在主屏幕上一样? 问题答案: 将要在文件的.plist。 在做一个 添加以下方法: { return UIStatusBarStyleLightContent; } 注意 :这不适用于内部控制器,请参阅下面的Tyson评论:) Swift 3