相关疑难解决方法(0)

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

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

statusbar textcolor ios uistatusbar ios7

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

如何在 SwiftUI 应用程序生命周期中更改 StatusBarStyle?

我已经花了很多时间试图找出一种使用新生命周期SwiftUI AppstatusBarStyle更改为亮/暗的方法。

关于状态栏的最新帖子教如何隐藏它,但我不想这样做,我只需要将其更改为深色或浅色即可。

要更改颜色,我发现的最新方法是打开SceneDelegate.swift并更改window.rootViewController以使用我自己的HostingController,但它仅适用于使用UIKit App Delegate Lifecycle 的项目。使用SwiftUI App LifecycleSceneDelegate.swift不会生成,那么我在哪里可以做呢?

我可以通过 Xcode 界面上的常规设置来完成。我的问题是如何通过代码动态地做到这一点。

  • 目标:iOS 14
  • IDE:Xcode 12 测试版 3
  • 操作系统:MacOS 11 Big Sur

以下是我到目前为止所得到的。

一切.swift

import Foundation
import SwiftUI

class LocalStatusBarStyle { // style proxy to be stored in Environment
    fileprivate var getter: () -> UIStatusBarStyle = { .default }
    fileprivate var setter: (UIStatusBarStyle) -> Void = {_ in}

    var currentStyle: UIStatusBarStyle …
Run Code Online (Sandbox Code Playgroud)

colors statusbar ios swift swiftui

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

为什么 EnvironmentKey 有一个 defaultValue 属性?

这是 的定义EnvironmentKey

public protocol EnvironmentKey {

    associatedtype Value

    static var defaultValue: Self.Value { get }
}
Run Code Online (Sandbox Code Playgroud)

我对defaultValue财产的目的感到困惑。或者我对@Environment. 让我解释...

根据我的测试,我知道defaultValue正在访问 。例如,如果您将 定义defaultValue为 getter:

protocol MyInjector: EnvironmentKey {
  static var defaultValue: Foo {
    print("get default value!")
    return Foo()
  }
}
Run Code Online (Sandbox Code Playgroud)

你会发现 SwiftUI 经常调用这个属性(因此,在实践中我将 my 定义defaultValuestatic let)。

当您在打印语句上添加断点并向下移动堆栈时,它会停在下面的箭头处:

extension EnvironmentValues {
  var myInjector: Foo {
    get { self[MyInjector.self] }  <-----------------
    set { self[MyInjector.self] = newValue }
  }
}
Run Code Online (Sandbox Code Playgroud)

在堆栈的更下方是 …

swift swiftui

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

标签 统计

ios ×2

statusbar ×2

swift ×2

swiftui ×2

colors ×1

ios7 ×1

textcolor ×1

uistatusbar ×1