Das Navigation SDK for iOS folgt nicht automatisch den hellen und dunklen Modi des iOS-Systems.
Stattdessen unterstützt eine navigationsfähige
GMSMapView
normale und Low-Light-Farbschemas über die Eigenschaft
lightingMode
und die Enum
GMSNavigationLightingMode:
- Normaler Modus (
.normal): Verwendet ein Farbschema, das für die Anzeige bei Tageslicht geeignet ist. - Low-Light-Modus (
.lowLight): Verwendet ein Farbschema, das für die Anzeige bei Nacht geeignet ist.
Automatisches Umschalten des Beleuchtungsmodus aktivieren
Das Navigation SDK for iOS berechnet den empfohlenen Beleuchtungsmodus basierend auf der Tageszeit und dem Standort des Geräts und stellt ihn über die
suggestedLightingMode
Eigenschaft von
GMSNavigatorzur Verfügung.
GMSMapView
wendet diese Empfehlung jedoch nicht automatisch an.
So wechseln Sie automatisch zwischen dem normalen und dem Low-Light-Modus: Führen Sie die folgenden Schritte in Ihrem Ansichtscontroller aus:
- Anfangsbeleuchtungsmodus beim Start festlegen: Wenn Sie die Karte einrichten, lesen Sie
die
suggestedLightingModeEigenschaft ausGMSNavigatorund weisen Sie diesen WertmapView.lightingModezu. Da der Listener nur ausgelöst wird, wenn sich der empfohlene Beleuchtungsmodus ändert (z. B. bei Sonnenaufgang oder Sonnenuntergang), wird durch das Festlegen des Anfangswerts sichergestellt, dass die Karte sofort im Low-Light-Modus gerendert wird, wenn der Nutzer die Navigation nachts startet. - Auf Änderungen des Beleuchtungsmodus während der Navigation warten: Übernehmen Sie das
GMSNavigatorListenerProtokoll und implementieren Sie dienavigator(_:didChangeSuggestedLightingMode:)Methode, ummapView.lightingModeimmer dann zu aktualisieren, wenn sich der empfohlene Modus ändert.
Im folgenden Beispiel wird gezeigt, wie Sie den anfänglichen Beleuchtungsmodus festlegen und aktualisieren, wenn sich der empfohlene Beleuchtungsmodus ändert:
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;
}
Weitere Informationen zur Übernahme von
GMSNavigatorListener,
finden Sie im Leitfaden Auf Navigationsereignisse warten unter Konformität mit den erforderlichen
Protokollen
deklarieren.
Normalen oder Low-Light-Modus erzwingen
Wenn Sie nicht möchten, dass die Karte automatisch zwischen den Modi wechselt, können Sie den normalen
oder Low-Light-Modus erzwingen, indem Sie
mapView.lightingMode
direkt festlegen und die
navigator(_:didChangeSuggestedLightingMode:)
Listener-Aktualisierung weglassen.
Im folgenden Beispiel wird gezeigt, wie Sie den Low-Light- oder normalen Modus für die Karte erzwingen:
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;
Farben der Benutzeroberfläche im Low-Light-Modus anpassen
Sie können auch die primären und sekundären Hintergrundfarben der Navigationskopfzeile anpassen, wenn sich die Karte im Low-Light-Modus befindet. Weitere Informationen zum Anpassen dieser Farben finden Sie im Leitfaden Navigationsbenutzeroberfläche ändern unter Farben der Kopfzeile im Low-Light-Modus.