Le SDK Navigation pour iOS ne suit pas automatiquement les modes clair et sombre du système iOS.
Au lieu de cela, un compatible avec la navigation
GMSMapView
prend en charge les jeux de couleurs normal et faible luminosité via sa
lightingMode
propriété et l'
GMSNavigationLightingMode
énumération :
- 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 visualisation de nuit.
Activer le changement automatique de mode d'éclairage
Le SDK Navigation pour iOS calcule le mode d'éclairage recommandé en fonction de l'heure
et de la position de l'appareil, et l'expose via la
suggestedLightingMode
propriété de
GMSNavigator.
Toutefois,
GMSMapView
n'applique pas automatiquement cette recommandation.
Pour passer automatiquement du mode normal au 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
suggestedLightingModepropriété à 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 de nuit. - Écoutez les changements de mode d'éclairage pendant la navigation : adoptez le
GMSNavigatorListenerprotocole et implémentez lanavigator(_:didChangeSuggestedLightingMode:)méthode 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 faible luminosité en définissant
mapView.lightingMode
directement et en omettant la
navigator(_:didChangeSuggestedLightingMode:)
mise à jour de l'écouteur.
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 mode 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 en mode faible luminosité dans le guide Modifier l'interface utilisateur de navigation.