Le SDK Navigation pour iOS ne suit pas automatiquement les modes clair et sombre du système iOS.
Au lieu de cela, un GMSMapView compatible avec la navigation prend en charge les jeux de couleurs normales et à faible luminosité grâce à sa propriété lightingMode et à l'énumération GMSNavigationLightingMode :
- Mode normal (
.normal) : Utilise un jeu de couleurs adapté à la visualisation en plein jour. - Mode faible luminosité (
.lowLight) : utilise un jeu de couleurs adapté à la vision nocturne.
Activer le changement automatique de mode d'éclairage
Le SDK Navigation pour iOS calcule le mode d'éclairage recommandé en fonction de l'heure de la journée et de l'emplacement de l'appareil, et l'expose via la propriété suggestedLightingMode de GMSNavigator.
Toutefois, GMSMapView n'applique pas automatiquement cette recommandation.
Pour basculer automatiquement entre le mode normal et le mode faible luminosité, procédez comme suit dans votre contrôleur de vue :
- Définissez le mode d'éclairage initial au démarrage : lorsque vous configurez la carte, lisez la propriété
suggestedLightingModeà partir deGMSNavigatoret attribuez cette valeur àmapView.lightingMode. Étant donné que l'écouteur ne se déclenche que lorsque le mode d'éclairage suggéré change (par exemple, au lever ou au coucher du soleil), la définition de la valeur initiale garantit que la carte s'affiche immédiatement en mode faible luminosité si l'utilisateur démarre la navigation la nuit. - Écoutez les changements de mode d'éclairage pendant la navigation : adoptez le protocole
GMSNavigatorListeneret implémentez la méthodenavigator(_:didChangeSuggestedLightingMode:)pour mettre à jourmapView.lightingModechaque fois que le mode suggéré change.
L'exemple suivant montre comment définir le mode d'éclairage initial et le mettre à jour lorsque le mode d'éclairage suggéré change :
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;
}
Pour en savoir plus sur l'adoption de GMSNavigatorListener, consultez Déclarer la conformité aux protocoles requis dans le guide "Écouter les événements de navigation".
Forcer le mode normal ou faible luminosité
Si vous ne souhaitez pas que la carte change de mode automatiquement, vous pouvez forcer le mode normal ou le mode faible luminosité en définissant directement mapView.lightingMode et en omettant la mise à jour de l'écouteur navigator(_:didChangeSuggestedLightingMode:).
L'exemple suivant montre comment forcer la carte à passer en mode faible luminosité ou 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;
Personnaliser les couleurs de l'interface utilisateur en faible luminosité
Vous pouvez également personnaliser les couleurs d'arrière-plan principales et secondaires de l'en-tête de navigation lorsque la carte est en mode faible luminosité. Pour en savoir plus sur la personnalisation de ces couleurs, consultez Couleurs de l'en-tête du mode faible luminosité dans le guide "Modifier l'UI de navigation".