相关疑难解决方法(0)

如何在iOS中更改状态栏文本颜色

我的应用程序背景较暗,但在iOS 7中,状态栏变得透明.所以我看不到任何东西,只有角落里的绿色电池指示灯.如何将状态栏文本颜色更改为白色,就像在主屏幕上一样?

statusbar textcolor ios uistatusbar ios7

975
推荐指数
38
解决办法
59万
查看次数

在Swift 3中更改状态栏背景颜色

在XCode 7.3.x中,我使用以下命令更改了StatusBar的背景颜色:

func setStatusBarBackgroundColor(color: UIColor) {
guard  let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
    return
}
statusBar.backgroundColor = color
}
Run Code Online (Sandbox Code Playgroud)

但似乎这不再适用于Swift 3.0.

我尝试过:

func setStatusBarBackgroundColor(color: UIColor) {
guard  let statusBar = (UIApplication.shared.value(forKey: "statusBarWindow") as AnyObject).value(forKey: "statusBar") as? UIView else {
    return
}
statusBar.backgroundColor = color
}
Run Code Online (Sandbox Code Playgroud)

但它给了我:

this class is not key value coding-compliant for the key statusBar.
Run Code Online (Sandbox Code Playgroud)

任何想法如何使用XCode8/Swift 3.0进行更改?

statusbar ios uistatusbar swift swift3

52
推荐指数
6
解决办法
5万
查看次数

如何解决:iOS 13.0中不推荐使用“ keyWindow”

我正在将Core Data和Cloud Kit一起使用,因此必须在应用程序启动期间检查iCloud用户状态。如果出现问题,我想向用户发出一个对话框UIApplication.shared.keyWindow?.rootViewController?.present(...),直到现在我还是这样做。

在Xcode 11 beta 4中,现在有一条新的弃用消息,告诉我:

iOS 13.0中已弃用“ keyWindow”:不应将其用于支持多个场景的应用程序,因为它会返回所有已连接场景的关键窗口

我该如何显示对话框?

uikit uiwindow uiapplication uiscene

43
推荐指数
14
解决办法
8426
查看次数

在iOS13中,状态栏背景色与大文本模式下的导航栏不同

问题演示

重现问题的前提条件:

  1. Xcode 11 Beta + iOS 13(最新版本至2019年6月12日)
  2. 导航栏处于大文本模式
  3. 指定导航栏的颜色。

在实际设备中,状态栏将在绿色导航栏上方保留为白色。

我尝试的解决方案:

  1. 将其还原回iOS12即可解决,但最终我们将遇到iOS13 ...
  2. 禁用大文本模式将解决此问题...
  3. 隐藏状态栏将解决此问题,但会导致状态文本与导航栏项重叠。

有任何想法吗?感谢您的帮助。

storyboard ios uistoryboard ios13

37
推荐指数
7
解决办法
2万
查看次数

如何在iOS 13中获取状态栏的高度?

在iOS 13中UIApplication.shared.statusBarFrame.height警告

在iOS 13.0中不建议使用“ statusBarFrame”:而是使用窗口场景的statusBarManager属性。

在iOS 13中如何在不使用不推荐使用的API的情况下获取状态栏的高度?

ios ios13

11
推荐指数
6
解决办法
5029
查看次数

在 iOS13 中更改状态栏背景颜色

在 iOS13 中,我无法再更改状态栏的背景颜色,因为无法再使用“键值”访问状态栏。有没有人弄清楚这是怎么可能的,或者是否知道在 iOS13 的最终版本中是可能的?

我遇到了不同的建议,比如使用 UIApplications StatusBarView(在 xcode 11、beta 7 中不再可用)或使用 statusbarmanager。两者都不允许访问状态栏。

let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
if statusBar.responds(to: #selector(setter: UIView.backgroundColor)) {
  statusBar.backgroundColor = <Some Color>
}
Run Code Online (Sandbox Code Playgroud)

我希望状态栏能够获得我需要的背景颜色。

objective-c statusbar ios ios13

11
推荐指数
4
解决办法
2万
查看次数

如何在iOS 13中更改状态栏Alpha?

我想在iOS 13中更改状态栏Alpha。

let statusBarWindow = UIApplication.shared.value(forKey: "statusBarWindow") as? UIWindow
statusBarWindow?.alpha = 0.5
Run Code Online (Sandbox Code Playgroud)

当我尝试此操作时,应用程序崩溃(线程1:信号SIGABRT)。

alpha statusbar ios swift ios13

4
推荐指数
2
解决办法
3381
查看次数

Swift:为iOS 13更改状态栏颜色

对于ios 13,我无法设置状态栏的文本颜色。如何获取statusBarManager的视图?如何仅更改文本颜色?

由于:

由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“在UIApplication上名为-statusBar或-statusBarWindow的应用程序:此代码必须更改,因为不再有状态栏或状态栏窗口。而是在窗口场景上使用statusBarManager对象。”

我当前的代码:

    func setStatusBarTextColor(_ color: UIColor) {
        if #available(iOS 13.0, *) {
            // How to do for iOS 13??
        } else {
            if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
                statusBar.setValue(color, forKey: "foregroundColor")
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已经找到了这个/sf/answers/4017632601/,但这不是我想要的

statusbar ios swift

4
推荐指数
3
解决办法
3944
查看次数

使用 UIStatusBarManager 更改状态栏背景颜色

早些时候在 Xcode 10 和 swift 5 上,我曾经按如下方式更改状态栏颜色:-

if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
   if statusBar.responds(to: #selector(setter: UIView.backgroundColor)) {
      statusBar.backgroundColor = #colorLiteral(red: 0, green: 0.7156304717, blue: 0.9302947521, alpha: 1)
   }
}
Run Code Online (Sandbox Code Playgroud)

现在在 Xcode 11 & Swift 5.1 上,我收到以下错误:-

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“应用程序在 UIApplication 上调用了 -statusBar 或 -statusBarWindow:必须更改此代码,因为不再有状态栏或状态栏窗口。改为在窗口场景中使用 statusBarManager 对象。

有什么建议?

uikit ios xcode11 swift5.1

3
推荐指数
1
解决办法
4699
查看次数

在 iOS13 上更改状态栏颜色

在 iOS 13 之前,我可以使用以下代码更改状态栏颜色:

        UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
        if (statusBar.RespondsToSelector(new ObjCRuntime.Selector("setBackgroundColor:")))
        {
            statusBar.BackgroundColor = UIColor.Clear.FromHex(0x323232);
            statusBar.TintColor = UIColor.White;
            app.StatusBarStyle = UIStatusBarStyle.BlackOpaque;
        }
Run Code Online (Sandbox Code Playgroud)

但是,在 iOS13 上,我收到以下运行时错误

抛出的 Objective-C 异常。名称:NSInternalInconsistencyException 原因:在 UIApplication 上调用了 -statusBar 或 -statusBarWindow 的应用程序:必须更改此代码,因为不再有状态栏或状态栏窗口。改为在窗口场景中使用 statusBarManager 对象。

关于如何更改 iOS13 上的状态栏的任何想法?

编辑:只是指出,这是针对 Xamarin 而不是针对 Swift。澄清重复标记。

c# xamarin.ios xamarin ios13

3
推荐指数
1
解决办法
3781
查看次数

iOS 13 设置状态栏背景色

我曾经有以下代码,但升级到 iOS 13 后,出现以下错误:

UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 94/225, green: 64/255, blue:204/255, alpha: 1.0)
Run Code Online (Sandbox Code Playgroud)

在 UIApplication 上调用 -statusBar 或 -statusBarWindow 的应用程序:必须更改此代码,因为不再有状态栏或状态栏窗口。改为在窗口场景中使用 statusBarManager 对象。

现在怎么设置状态栏的背景色?

警告消息提到了使用 statusBarManager,所以我做了这样的事情,但我无法让它工作。

var statusBar = UIView()

    if #available(iOS 13.0, *) {
        statusBar = UIView(frame: UIApplication.shared.keyWindow?.windowScene?.statusBarManager?.statusBarFrame ?? CGRect.zero)
        statusBar.backgroundColor = UIColor.red
        UIApplication.shared.keyWindow?.addSubview(statusBar)
    } else {
        //ios 12 and below
        UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 94/225, green: 64/255, blue:204/255, alpha: 1.0)
    }
Run Code Online (Sandbox Code Playgroud)

statusbar swift ios13

1
推荐指数
1
解决办法
2781
查看次数