为啥我的 iOS 应用没有禁用暗模式?
Posted
技术标签:
【中文标题】为啥我的 iOS 应用没有禁用暗模式?【英文标题】:Why doesn't my iOS app disable dark mode?为什么我的 iOS 应用没有禁用暗模式? 【发布时间】:2020-02-24 19:27:40 【问题描述】:所以...我尝试根据苹果文档通过强制亮模式将我的应用程序设置为禁用 ios 13 暗模式,在模拟器中所有尝试都可以正常工作,但是当我在真实设备上尝试时,没有任何反应,这是就像我从未更改过我的代码一样
第一次尝试
覆盖窗口、视图或视图控制器的界面样式
我尝试将此代码示例放入我的 viewDidLoad() 中
没有任何变化
if #available(iOS 13.0, *)
overrideUserInterfaceStyle = .light
else
// Fallback on earlier versions
第二次尝试
完全退出黑暗模式
系统会自动选择任何与 iOS 13.0 或更高版本 SDK 相关联的应用,以提供浅色和深色外观。如果您需要额外的时间来处理应用程序的暗模式支持,您可以通过在应用程序的 Info.plist 文件中包含 UIUserInterfaceStyle 键(值为 Light)来暂时退出。将此键设置为 Light 会导致系统忽略用户的偏好并始终为您的应用应用浅色外观。
没有任何改变
Apple Documentation: Choosing a Specific Interface Style for Your iOS App
如果有人知道我如何将我的应用设置为仅在灯光模式下...我将不胜感激:D
【问题讨论】:
您在问题中发布的所有内容都是正确的。你甚至说它可以在模拟器中工作。真实设备上的问题可能是应用程序实际上并未更新。从设备中删除您的应用程序,然后通过 Xcode 重新安装。它现在是否像在模拟器中一样工作? ***.com/questions/56537855/…的可能副本 【参考方案1】:您只需在您的应用 info.plist 中添加一个新密钥 UIUserInterfaceStyle
(注意:Xcode 12 及更高版本已重命名为 Appearance
) 并将其值设置为 Light or Dark
。这会将应用默认样式覆盖为您提供的值。
因此您无需费心将其放在其他任何地方
【讨论】:
当我在模拟器中运行我的应用程序时,这个解决方案工作正常,但在真实设备中,没有任何改变 尝试先从设备上卸载应用程序并检查您是否使用相同的 info.plist 文件并确保您正在清理项目 这个答案实际上并没有解决问题。 OP 已经在使用 Info.plist 键。至少用需要删除并重新安装应用程序的实际解决方案重做答案。 确保值为Light
,而不是light
(区分大小写)
这快把我逼疯了。我检查了“Light”的情况,清理了项目,从模拟器和真实设备中删除了它,但没有什么能阻止应用程序进入设置了暗模式的暗模式。 info.plist 清楚地识别“外观”属性【参考方案2】:
if #available(iOS 13, *)
window.overrideUserInterfaceStyle = .light
应该可以。在您的AppDelegate
的didFinishLaunchingWithOptions
中调用它。
【讨论】:
但在 iOS 13 下,您的应用窗口不会在应用委托中,而是在场景委托中,除非您完全退出场景。【参考方案3】:为 iOS 13+ 版本更改窗口 UserInterfaceStyle。只需设置
UIApplication.shared.changeStatusBarStyle(.light)
或
UIApplication.shared.changeStatusBarStyle(.dark)
每次更换窗口后。
extension UIApplication
enum StatusColor
case dark, light
func changeStatusBarStyle(_ mode: StatusColor = .light)
if #available(iOS 13.0, *)
guard let appDelegate = delegate as? AppDelegate else return
var interfaceStyle: UIUserInterfaceStyle
switch mode
case .dark:
interfaceStyle = .dark
default:
interfaceStyle = .light
appDelegate.window?.overrideUserInterfaceStyle = interfaceStyle
如果有任何困惑,请告诉我。
【讨论】:
【参考方案4】:添加到 Info.plist
<key>Appearance</key>
<string>Light</string>
【讨论】:
以上是关于为啥我的 iOS 应用没有禁用暗模式?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SwiftUI 将应用程序采用到 iOS 13 暗模式?