Después de de nuestra prolongada compilación de información hemos podido resolver este disgusto que pueden tener muchos los lectores. Te compartimos la respuesta y esperamos servirte de gran ayuda.
Solución:
Primero, aquí está la entrada de Apple relacionada con la exclusión voluntaria del modo oscuro.
El contenido de este enlace está escrito para Xcode 11 y iOS 13:
Esta sección se aplica al uso de Xcode 11
Si desea optar por no participar en TODA su aplicación
Enfoque n. ° 1
Utilice lo siguiente key en su archivo info.plist:
UIUserInterfaceStyle
Y asígnele un valor de Light
.
El XML Para el UIUserInterfaceStyle
asignación:
UIUserInterfaceStyle
Light
Enfoque # 2
Puedes configurar overrideUserInterfaceStyle
contra la aplicación window
variable.
Dependiendo de cómo se creó su proyecto, esto puede estar en el AppDelegate
archivo o el SceneDelegate
.
if #available(iOS 13.0, *)
window?.overrideUserInterfaceStyle = .light
Si desea excluirse de su UIViewController de forma individual
override func viewDidLoad()
super.viewDidLoad()
// overrideUserInterfaceStyle is available with iOS 13
if #available(iOS 13.0, *)
// Always adopt a light interface style.
overrideUserInterfaceStyle = .light
Documentación de Apple para overrideUserInterfaceStyle
Cómo se verá el código anterior en Xcode 11:
Esta sección se aplica al uso de Xcode 10.x
Si está utilizando Xcode 11 para su envío, puede ignorar con seguridad todo lo que se encuentra debajo de esta línea.
Dado que la API relevante no existe en iOS 12, obtendrá errores al intentar utilizar los valores proporcionados anteriormente:
Para configurar overrideUserInterfaceStyle
en tus UIViewController
Si desea excluirse de su UIViewController de forma individual
Esto se puede manejar en Xcode 10 probando la versión del compilador y la versión de iOS:
#if compiler(>=5.1)
if #available(iOS 13.0, *)
// Always adopt a light interface style.
overrideUserInterfaceStyle = .light
#endif
Si desea optar por no participar en TODA su aplicación
Puede modificar el fragmento anterior para que funcione con toda la aplicación para Xcode 10, agregando el siguiente código a su AppDelegate
Archivo.
#if compiler(>=5.1)
if #available(iOS 13.0, *)
// Always adopt a light interface style.
window?.overrideUserInterfaceStyle = .light
#endif
Sin embargo, la configuración de plist fallará al usar Xcode versión 10.x:
Crédito a @Aron Nelson, @Raimundas Sakalauskas, @NSLeader y rmaddy por mejorar esta respuesta con sus comentarios.
Según la sesión de Apple sobre “Implementación del modo oscuro en iOS” (https://developer.apple.com/videos/play/wwdc2019/214/ a partir de las 31:13) es posible configurar overrideUserInterfaceStyle
a UIUserInterfaceStyleLight
o UIUserInterfaceStyleDark
en cualquier controlador de vista o vista, que se utilizará en el traitCollection
para cualquier subvista o controlador de vista.
Como ya lo mencionó SeanR, puede configurar UIUserInterfaceStyle
a Light
o Dark
en el archivo plist de su aplicación para cambiar esto para toda su aplicación.
Si no está utilizando Xcode 11 o posterior (es decir, iOS 13 o SDK posterior), su aplicación no ha optado automáticamente por admitir el modo oscuro. Por lo tanto, no es necesario optar por salir del modo oscuro.
Si está utilizando Xcode 11 o posterior, el sistema ha habilitado automáticamente el modo oscuro para su aplicación. Hay dos enfoques para deshabilitar el modo oscuro según sus preferencias. Puede deshabilitarlo por completo o deshabilitarlo para cualquier ventana, vista o controlador de vista específico.
Desactive el modo oscuro por completo para su aplicación
Puede desactivar el modo oscuro incluyendo el UIUserInterfaceStyle
key con un valor como Light
en el archivo Info.plist de su aplicación.
Esto ignora las preferencias del usuario y siempre aplica una apariencia ligera a su aplicación.
Deshabilitar el modo oscuro para la ventana, la vista o el controlador de vista
Puede forzar su interfaz para que aparezca siempre en un estilo claro u oscuro configurando el overrideUserInterfaceStyle
propiedad del controlador de ventana, vista o vista correspondiente.
Ver controladores:
override func viewDidLoad()
super.viewDidLoad()
/* view controller’s views and child view controllers
always adopt a light interface style. */
overrideUserInterfaceStyle = .light
Puntos de vista:
// The view and all of its subviews always adopt light style.
youView.overrideUserInterfaceStyle = .light
Ventana:
/* Everything in the window adopts the style,
including the root view controller and all presentation controllers that
display content in that window.*/
window.overrideUserInterfaceStyle = .light
Nota: Apple recomienda encarecidamente que sea compatible con el modo oscuro en su aplicación. Por lo tanto, solo puede desactivar el modo oscuro temporalmente.
Lea más aquí: Elegir un estilo de interfaz específico para su aplicación iOS