SDK навигации для iOS не автоматически следует светлым и темным режимам системы iOS. Вместо этого, GMSMapView с поддержкой навигации использует обычные и темные цветовые схемы через свойство lightingMode и перечисление GMSNavigationLightingMode :
- Normal mode (
.normal): Uses a color scheme suitable for daylight viewing. - Low-light mode (
.lowLight): Uses a color scheme suitable for night viewing.
Enable automatic lighting mode switching
SDK навигации для iOS вычисляет рекомендуемый режим освещения на основе времени суток и местоположения устройства и предоставляет его через свойство suggestedLightingMode объекта GMSNavigator . Однако GMSMapView не применяет эту рекомендацию автоматически.
To switch between normal and low-light modes automatically, complete the following steps in your view controller:
- Установите начальный режим освещения при запуске : при настройке карты считайте свойство
suggestedLightingModeизGMSNavigatorи присвойте это значение свойствуmapView.lightingMode. Поскольку обработчик событий срабатывает только при изменении предлагаемого режима освещения (например, на восходе или закате солнца), установка начального значения гарантирует, что карта сразу же отобразится в режиме низкой освещенности, если пользователь начнет навигацию ночью. - Отслеживайте изменения режима освещения во время навигации : используйте протокол
GMSNavigatorListenerи реализуйте методnavigator(_:didChangeSuggestedLightingMode:), чтобы обновлятьmapView.lightingModeвсякий раз, когда изменяется предлагаемый режим.
The following example shows how to set the initial lighting mode and update it when the suggested lighting mode changes:
Быстрый
// 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;
}
For more information about adopting GMSNavigatorListener , see Declaring conformance to the required protocols in the Listen for navigation events guide.
Force normal or low-light mode
Если вы не хотите, чтобы карта автоматически переключала режимы, вы можете принудительно установить обычный или слабоосвещенный режим, задав mapView.lightingMode напрямую и пропустив обновление обработчика события navigator(_:didChangeSuggestedLightingMode:) .
The following example shows how to force the map into low-light or normal mode:
Быстрый
// 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;
Customize low-light UI colors
Вы также можете настроить основной и дополнительный цвета фона заголовка навигации, когда карта находится в режиме низкой освещенности. Дополнительную информацию о настройке этих цветов см. в разделе «Цвета заголовка в режиме низкой освещенности» в руководстве «Изменение пользовательского интерфейса навигации».