Saltar al contenido

¿Es posible inhabilitar el modo oscuro en iOS 13?

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:

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

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.
UIUserInterfaceStyle como Light

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

Te mostramos las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *