Pakiet SDK do nawigacji na iOS nie dostosowuje się automatycznie do trybu jasnego i ciemnego systemu iOS.
Zamiast tego GMSMapView z włączoną nawigacją obsługuje normalne i słabe schematy kolorów za pomocą właściwości lightingMode i typu wyliczeniowego GMSNavigationLightingMode:
- Tryb normalny (
.normal): używa schematu kolorów odpowiedniego do oglądania w świetle dziennym. - Tryb słabego oświetlenia (
.lowLight): używa schematu kolorów odpowiedniego do oglądania w nocy.
Włącz automatyczne przełączanie trybu jasnego
Pakiet SDK do nawigacji na iOS oblicza zalecany tryb oświetlenia na podstawie pory dnia i lokalizacji urządzenia, a następnie udostępnia go za pomocą właściwości suggestedLightingMode obiektu GMSNavigator.
Jednak GMSMapView nie stosuje tej rekomendacji automatycznie.
Aby automatycznie przełączać się między trybem normalnym a trybem słabego oświetlenia, wykonaj te czynności w kontrolerze widoku:
- Ustaw początkowy tryb oświetlenia przy uruchamianiu: podczas konfigurowania mapy odczytaj właściwość
suggestedLightingModezGMSNavigatori przypisz tę wartość domapView.lightingMode. Ponieważ detektor uruchamia się tylko wtedy, gdy zmienia się sugerowany tryb oświetlenia (np. o wschodzie lub zachodzie słońca), ustawienie wartości początkowej zapewnia, że mapa będzie renderowana w trybie słabego oświetlenia natychmiast, gdy użytkownik rozpocznie nawigację w nocy. - Nasłuchiwanie zmian trybu oświetlenia podczas nawigacji: zastosuj protokół
GMSNavigatorListeneri zaimplementuj metodęnavigator(_:didChangeSuggestedLightingMode:), aby aktualizowaćmapView.lightingModeza każdym razem, gdy sugerowany tryb ulegnie zmianie.
Ten przykład pokazuje, jak ustawić początkowy tryb oświetlenia i zaktualizować go, gdy zmieni się sugerowany tryb oświetlenia:
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;
}
Więcej informacji o stosowaniu GMSNavigatorListener znajdziesz w sekcji Deklarowanie zgodności z wymaganymi protokołami w przewodniku dotyczącym nasłuchiwania zdarzeń nawigacji.
Wymuszanie trybu normalnego lub słabego oświetlenia
Jeśli nie chcesz, aby mapa automatycznie przełączała tryby, możesz wymusić tryb normalny lub słabego oświetlenia, ustawiając bezpośrednio mapView.lightingMode i pomijając aktualizację detektora navigator(_:didChangeSuggestedLightingMode:).
Poniższy przykład pokazuje, jak wymusić tryb słabego oświetlenia lub normalny:
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;
Dostosowywanie kolorów interfejsu przy słabym oświetleniu
Możesz też dostosować główny i dodatkowy kolor tła nagłówka nawigacji, gdy mapa jest w trybie słabego oświetlenia. Więcej informacji o dostosowywaniu tych kolorów znajdziesz w sekcji Kolory nagłówka w trybie słabego oświetlenia w przewodniku po modyfikowaniu interfejsu nawigacji.