Configurer les modes normal et faible luminosité

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 :

  1. Définissez le mode d'éclairage initial au démarrage : lorsque vous configurez la carte, lisez la suggestedLightingMode propriété à partir de GMSNavigator et 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.
  2. Écoutez les changements de mode d'éclairage pendant la navigation : adoptez le GMSNavigatorListener protocole et implémentez la navigator(_:didChangeSuggestedLightingMode:) méthode pour mettre à jour mapView.lightingMode chaque 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.