Navigation SDK для iOS не поддерживает автоматическое переключение между светлой и темной темами.
Вместо этого объект GMSMapView с поддержкой навигации поддерживает обычную и темную цветовые схемы через свойство lightingMode и перечисление GMSNavigationLightingMode:
- Обычный режим (
.normal). Используется цветовая схема, подходящая для просмотра при дневном свете. - Режим низкой освещенности (
.lowLight) – цветовая схема, подходящая для ночного просмотра.
Как включить автоматическое переключение режима освещения
Navigation SDK для iOS рассчитывает рекомендуемый режим освещения на основе времени суток и местоположения устройства и предоставляет его через свойство suggestedLightingMode класса GMSNavigator.
Однако GMSMapView не применяет эту рекомендацию автоматически.
Чтобы автоматически переключаться между обычным режимом и режимом низкой освещенности, выполните следующие действия в контроллере представления:
- Задайте режим освещения при запуске. При настройке карты прочитайте свойство
suggestedLightingModeизGMSNavigatorи присвойте это значениеmapView.lightingMode. Поскольку слушатель срабатывает только при изменении предложенного режима освещения (например, на восходе или закате солнца), установка начального значения гарантирует, что карта будет сразу же отображаться в режиме слабого освещения, если пользователь начнет навигацию ночью. - Отслеживайте изменения режима освещения во время навигации. Примените протокол
GMSNavigatorListenerи реализуйте методnavigator(_:didChangeSuggestedLightingMode:), чтобы обновлятьmapView.lightingModeпри каждом изменении рекомендуемого режима.
В следующем примере показано, как задать начальный режим освещения и обновлять его при изменении рекомендуемого режима:
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;
}
Подробнее о том, как использовать GMSNavigatorListener, можно узнать в руководстве Декларирование соответствия обязательным протоколам.
Как принудительно включить обычный режим или режим низкой освещенности
Если вы не хотите, чтобы карта переключалась между режимами автоматически, вы можете принудительно включить обычный режим или режим низкой освещенности, задав значение mapView.lightingMode напрямую и не обновляя прослушиватель navigator(_:didChangeSuggestedLightingMode:).
В следующем примере показано, как принудительно включить на карте режим низкой освещенности или обычный режим:
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;
Как настроить цвета интерфейса в ночном режиме
Вы также можете настроить основной и дополнительный цвета фона заголовка навигации, когда карта находится в режиме низкой освещенности. Подробнее о том, как настроить цвета заголовка в режиме слабого освещения…