iOS UIAlertController 深色主题

XvK*_*tvX 5 themes ios uialertcontroller

我正在开发一个带有深色主题的 iOS 应用程序,我想使用UIAlertController. 但是,白色警报看起来不合适。即使在黑暗主题的应用程序上使用黑暗主题是否违反人机界面指南UIAlertController(当我说黑暗主题警报时,我的意思是将白色背景切换为深灰色,将文本切换为白色,这也包括按钮)。

假设它不违反指导方针,我将如何实现这一目标?我似乎找不到UIAlertController允许这样做的主题。

小智 11

在 iOS 13 中,Apple 提供了深色模式。但是如果您的 App 主题与设备主题不匹配,您可以设置视图控制器的主题。

例如,我的设备外观是深色模式,而我的应用程序始终处于浅色模式。但是使用 UIAlertController 的弹出窗口遵循设备主题、深色主题,并且我的白屏上的黑色弹出窗口不匹配。

解决方案#1:内联解决方案

在创建 UIAlertController 时,我可以设置它的主题

alert.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
Run Code Online (Sandbox Code Playgroud)

解决方案#2:支持整个应用程序

在您的 AppDelegate 中,设置窗口的主题

self.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
Run Code Online (Sandbox Code Playgroud)

这将导致所有弹出窗口使用浅色主题。

注意:如果您设置其 overrideUserInterfaceStyle 属性,则 UIAlertView 将不会使用深色/浅色主题。另外,不要忘记if #available(iOS 13.0, *)在设置属性之前添加检查,因为它仅在 iOS 13+ 中可用


Mic*_*chi 0

嗯,自定义UIAlertView/UIAlertController是不可能的,但是 CocoaControls 上有很多自定义警报实现,只需看一下那里即可。这更像是一个哲学问题;我想这并没有真正违反任何规定。