El SDK de Navigation para iOS no sigue automáticamente los modos claro y oscuro del sistema iOS.
En cambio, un objeto GMSMapView con navegación habilitada admite esquemas de colores normales y con poca luz a través de su propiedad lightingMode y la enumeración GMSNavigationLightingMode:
- Modo normal (
.normal): Usa un esquema de colores adecuado para la visualización con luz diurna. - Modo de poca luz (
.lowLight): Usa un esquema de colores adecuado para la visualización nocturna.
Habilita el cambio automático del modo de iluminación
El SDK de Navigation para iOS calcula el modo de iluminación recomendado según la hora del día y la ubicación del dispositivo, y lo expone a través de la propiedad suggestedLightingMode de GMSNavigator.
Sin embargo,
GMSMapView
no aplica esta recomendación automáticamente.
Para cambiar entre los modos normal y de poca luz automáticamente, completa los siguientes pasos en tu controlador de vista:
- Establece el modo de iluminación inicial en el inicio: Cuando configures el mapa, lee la propiedad
suggestedLightingModedeGMSNavigatory asigna ese valor amapView.lightingMode. Debido a que el objeto de escucha solo se activa cuando cambia el modo de iluminación sugerido (como al amanecer o al atardecer), establecer el valor inicial garantiza que el mapa se renderice en el modo de poca luz de inmediato si el usuario inicia la navegación por la noche. - Detecta cambios en el modo de iluminación durante la navegación: Adopta el protocolo
GMSNavigatorListenery, luego, implementa el métodonavigator(_:didChangeSuggestedLightingMode:)para actualizarmapView.lightingModecada vez que cambie el modo sugerido.
En el siguiente ejemplo, se muestra cómo configurar el modo de iluminación inicial y actualizarlo cuando cambia el modo de iluminación sugerido:
Swift
// Step 1: Set the initial lighting mode on launch or setup.
mapView.navigator?.add(self)
mapView.lightingMode = mapView.navigator?.suggestedLightingMode ?? .normal
// Step 2: Update the lighting mode when the sun sets or rises during navigation.
func navigator(
_ navigator: GMSNavigator,
didChangeSuggestedLightingMode lightingMode: GMSNavigationLightingMode
) {
mapView.lightingMode = lightingMode
}
Objective-C
// Step 1: Set the initial lighting mode on launch or setup.
[_mapView.navigator addListener:self];
_mapView.lightingMode = _mapView.navigator.suggestedLightingMode;
// Step 2: Update the lighting mode when the sun sets or rises during navigation.
- (void)navigator:(GMSNavigator *)navigator
didChangeSuggestedLightingMode:(GMSNavigationLightingMode)lightingMode {
_mapView.lightingMode = lightingMode;
}
Para obtener más información sobre la adopción de GMSNavigatorListener, consulta Declara la conformidad con los protocolos requeridos en la guía Escucha eventos de navegación.
Forzar el modo normal o de poca luz
Si no quieres que el mapa cambie de modo automáticamente, puedes forzar el modo normal o el modo de poca luz configurando mapView.lightingMode directamente y omitiendo la actualización del objeto de escucha navigator(_:didChangeSuggestedLightingMode:).
En el siguiente ejemplo, se muestra cómo forzar el mapa al modo de poca luz o al modo normal:
Swift
// Force low-light mode.
mapView.lightingMode = .lowLight
// Or force normal (daylight) mode.
mapView.lightingMode = .normal
Objective-C
// Force low-light mode.
_mapView.lightingMode = GMSNavigationLightingModeLowLight;
// Or force normal (daylight) mode.
_mapView.lightingMode = GMSNavigationLightingModeNormal;
Personaliza los colores de la IU con poca luz
También puedes personalizar los colores de fondo principal y secundario del encabezado de navegación cuando el mapa está en el modo de poca luz. Para obtener más información sobre cómo personalizar estos colores, consulta Colores del encabezado del modo de poca luz en la guía Modifica la IU de navegación.