标签: ios-darkmode

iOS13 暗模式泄露指示器:不可读

我有自定义 UITableView,我将背景颜色设置为白色。这适用于黑暗和明亮模式。但在黑暗模式下,披露指标很难看到。

我试图用 cell.tint 颜色解决这个问题,但它不起作用。我该如何解决?

黑暗模式:

在此处输入图片说明

明亮模式:

在此处输入图片说明

uikit ios ios-darkmode

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

iOS UILabel textColor 未在暗模式下更新

我有一个集合视图,显示应用程序中的时间段。在黑暗模式下,UILabel 似乎没有在白色背景上显示黑色文本颜色。

在故事板中,我已将标签的颜色设置为黑色(也尝试了默认颜色)。

在代码中,当用户选择单元格时,

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

   if let cell = collectionView.cellForItem(at: indexPath) as? TimeCell{
      cell.timeLabel.toggleTheme(true)
   }
 }
Run Code Online (Sandbox Code Playgroud)

我有 UILabel 扩展:

extension UILabel{

    func toggleTheme(_ selected : Bool){
        if selected{
            if #available(iOS 13.0, *) {
                if self.traitCollection.userInterfaceStyle == .dark{
                    self.textColor = UIColor.black
                    self.backgroundColor = UIColor.white
                }else{
                    self.textColor = UIColor.white
                    self.backgroundColor = UIColor.black
                }
            } else {
                 self.textColor = UIColor.white
                 self.backgroundColor = UIColor.black
            }

        }else{
            if #available(iOS 13.0, *) {
                if self.traitCollection.userInterfaceStyle == .dark{
                    self.textColor = …
Run Code Online (Sandbox Code Playgroud)

swift ios13 xcode11 ios-darkmode

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

如何在暗模式下使用 Light UIUserInterfaceStyle 图像版本?

我使用图像,这个图像有两个版本的 light 和 dark UIUserInterfaceStyle,但是UIViewController当暗模式打开时,我需要在一个版本中使用图像 light 版本。我知道我可以使用tintColor,但我想知道是否有其他方法可以做到这一点。

ios swift ios13 ios-darkmode uiuserinterfacestyle

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

如何将 MKMapView 设为暗模式?

如何将地图从iOS 13更改为暗模式?

我已从 UserInterfaceStyle 中选择退出,因此系统范围的颜色不适用于我,所以我将手动进行。

我在8:19看过苹果WWDC2019 - Session 236 的这段视频,但那是快照,我没看懂

实际上我正在尝试类似的事情:

private var mapView: MKMapView!

override func viewDidLoad() {
    super.viewDidLoad()
    mapView.backgroundColor = .black       
}
Run Code Online (Sandbox Code Playgroud)

但它不会将主题或外观或 traitCollection 更改为深色。

有什么建议吗?

mapkit swift ios13 ios-darkmode

3
推荐指数
2
解决办法
3813
查看次数

如何在 iOS 13 中的 Swift 中立即更改状态栏文本颜色

我正在使用 Swift 5.1 和 Xcode 11.1,目前我已经完成了暗模式设计。

用户使用此代码更改设置页面中的主题样式后,主题会立即更新。

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
   return
}
appDelegate.changeTheme(themeVal)

// App Delegate File
...
func changeTheme(themeVal: String) {
   if #available(iOS 13.0, *) {
       switch AppState.appThemeStyle {
       case "dark":
           window?.overrideUserInterfaceStyle = .dark
           break
       case "light":
           window?.overrideUserInterfaceStyle = .light
           break
       default:
           window?.overrideUserInterfaceStyle = .unspecified
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

但问题是我看不到状态栏文本,因为状态栏文本颜色和视图颜色相同。

有人可以建议我好的解决方案吗?谢谢。

ios swift ios-darkmode

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

ios13 暗模式更改无法被 tableview Cell 识别?

我正在检查我现有的应用程序是否与 ios 13 新引入的暗模式功能一起正常工作。

一切似乎都正常,只有我的一个 tableViews 中的单元格背景没有根据模式(暗/亮)刷新。

如果应用程序以深色模式启动,单元格也会显示正确的深色背景。如果应用程序在后台时模式发生变化,则单元格背景颜色不会更改。单元格标签切换颜色正确。

对于 tableview 单元格,我使用以下函数进行渐变:

func gradient(frame:CGRect) -> CAGradientLayer { 

    let gradColor1 = UIColor(named: "gradientBright")!
    let gradColor2 = UIColor(named: "gradientDark")!

    let layer = CAGradientLayer()
    layer.frame = frame
    layer.startPoint = CGPoint(x: 0.5, y: 0)
    layer.endPoint = CGPoint(x: 0.5, y: 1)
    layer.colors = [
        gradColor1.cgColor,
        gradColor2.cgColor
    ]
    layer.shadowOpacity = 0.7
    layer.shadowRadius = 10.0
    return layer
}
Run Code Online (Sandbox Code Playgroud)

我将渐变背景添加到表格单元格中

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
Run Code Online (Sandbox Code Playgroud)

使用以下代码

cell.layer.insertSublayer(gradient(frame: cell.bounds), at: 0)
Run Code Online (Sandbox Code Playgroud)

任何想法,为什么在应用程序处于活动状态或在后台时发生模式更改后,只有渐变功能似乎无法获得正确的颜色?

问候

uicolor ios swift ios-darkmode

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

如何在Swift中处理深色模式的自定义颜色

这是我目前UI Element Colors在深色模式下处理旧版本操作系统的方式。

extension UIColor {
    class var mySystemBackground: UIColor {
        if #available(iOS 13, *) {
            return .systemBackground
        } else {
            return .white
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,可以systemBackground知道它何时处于暗模式下以及何时处于亮模式下,并相应地进行了更改。我想使用自定义颜色做类似的事情。

例如,我有一个自定义的黄色,当前正在整个应用程序中使用,我想为处于深色模式的用户提供不同的颜色。

这是我在想的代码...

extension UIColor{
    class var mySystemYellowColor: UIColor {
        // default light-color 
        var myYellow = UIColor(red: 254/255, green: 219/255, blue: 2/255, alpha: 1.0) /* #fedb02 */

        if #available(iOS 13.0, *) {  

            if traitCollection.userInterfaceStyle == .light {
                return myYellow
            } else {
                // color for dark mode in iOS 13.0 …
Run Code Online (Sandbox Code Playgroud)

ios swift ios13 ios-darkmode

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

状态栏外观无法正常工作 - 使用 iOS 13 暗模式

我的应用程序具有default用于登录前屏幕的状态栏样式。- 登录后,应用程序lightContent在整个应用程序中使用状态栏样式。

一切正常,直到 iOS 12。它开始在 iOS 13 上产生问题(仅当启用暗模式时)

以下是我已经尝试过的事情,但仍然无法正常工作。

  • 我确实设置UIUserInterfaceStyleLight
  • 我确实设置UIViewControllerBasedStatusBarAppearanceYES
  • 然后我在单个视图控制器中尝试了以下代码

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

  • 还在viewDidLoad()类文件中添加了这一行。

setNeedsStatusBarAppearanceUpdate()

但是,我仍然没有摆脱与状态栏相关的东西。我只需要我的状态栏在登录前在屏幕上变暗,一旦用户登录,它应该亮起。

整个应用程序应具有相同的深色和浅色模式 UI。(因为它适用于 iOS 13 以下的操作系统)现在工作正常,但只有状态栏在改变颜色。

注意:禁用暗模式后一切正常。这仅在启用暗模式时才会产生问题。

根据我的理解,我在 Xcode 中创建了一个新项目,并添加了 3 个具有不同状态栏外观的屏幕。

A 工作案例
VC1 -Default风格
VC2 -Default风格
VC3 -LightContent风格

一个工作情况
VC1 -LightContent风格
VC2 -LightContent风格
VC3 -Default风格

不工作(失败)情况
VC1 -Default …

statusbar swift ios-darkmode

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

即使打开深色模式,iOS 上的平台亮度仍然很亮 - Flutter

我正在尝试在我的 flutter 应用程序中实现黑暗模式,但我不知道我错过了什么,但它在 iOS 上不起作用。我设法在 Android 上运行得很好,但当我打印时,WidgetsBinding.instance.window.platformBrightness仍然有光,当黑暗模式打开时。

当我设置 themeMode: ThemeMode.dark - 深色模式正常工作时,问题出在自动检测上。

另外,当我运行新的空白项目时,深色模式工作正常。但在我构建的应用程序中,它不起作用。即使themeMode设置为ThemeMode.system

      themeMode: ThemeMode.system,
      theme: ThemeData(
        accentColor: darkBlue,
        cursorColor: red,
        primaryColor: Colors.white,
        brightness: Brightness.light,
      ),
      darkTheme: ThemeData(
        accentColor: Colors.white,
        cursorColor: red,
        primaryColor: Colors.white,
        brightness: Brightness.dark,
      ),
Run Code Online (Sandbox Code Playgroud)

您有什么想法吗?可能出了什么问题,或者您有什么建议吗?

Flutter 版本:1.12.13-hotfix.9和 iOS 版本:iPhone SE 模拟器 - iOS 13.3

多谢。

ios flutter ios-darkmode

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

快速的明暗模式

我为深色和浅色模式创建了图像资源,名为 myImage。将图像资源外观设置为任意、深色。

问题是,即使模式是浅色或深色,此代码也会得到相同的图像。

如何获取代码以根据浅色或深色模式选择正确的图像?

感谢您的帮助。

let image = UIImage(named: "image")
let asset = image?.imageAsset
let resolvedImage =    asset?.image(with: traitCollection)

If let image = resolvedImage {
  myButton.setImage(image, for:     .normal)
}
Run Code Online (Sandbox Code Playgroud)

light swift ios-darkmode

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