O SDK Navigation para iOS não segue automaticamente os modos claro e escuro do sistema iOS.
Em vez disso, um
GMSMapView
compatível com navegação oferece suporte a esquemas de cores normais e com pouca luz usando a propriedade
lightingMode
e a enumeração
GMSNavigationLightingMode:
- Modo normal (
.normal): usa um esquema de cores adequado para visualização à luz do dia. - Modo pouca luz (
.lowLight): usa um esquema de cores adequado para visualização noturna.
Ativar a troca automática do modo de iluminação
O SDK Navigation para iOS calcula o modo de iluminação recomendado com base na hora do dia e na localização do dispositivo e o expõe pela propriedade suggestedLightingMode de GMSNavigator.
No entanto, o
GMSMapView
não aplica essa recomendação automaticamente.
Para alternar entre os modos normal e pouca luz automaticamente, siga estas etapas no controlador de visualização:
- Defina o modo de iluminação inicial na inicialização: ao configurar o mapa, leia a propriedade
suggestedLightingModedeGMSNavigatore atribua esse valor amapView.lightingMode. Como o listener só é acionado quando o modo de iluminação sugerido muda (como ao nascer ou pôr do sol), definir o valor inicial garante que o mapa seja renderizado no modo de pouca luz imediatamente se o usuário iniciar a navegação à noite. - Detectar mudanças no modo de iluminação durante a navegação: adote o
protocolo
GMSNavigatorListenere implemente o métodonavigator(_:didChangeSuggestedLightingMode:)para atualizarmapView.lightingModesempre que o modo sugerido mudar.
O exemplo a seguir mostra como definir o modo de iluminação inicial e atualizá-lo quando o modo de iluminação sugerido muda:
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;
}
Para mais informações sobre a adoção de
GMSNavigatorListener,
consulte Declarar conformidade com os protocolos
necessários
no guia "Detectar eventos de navegação".
Forçar o modo normal ou pouca luz
Se você não quiser que o mapa mude de modo automaticamente, force o modo normal ou com pouca luz definindo mapView.lightingMode diretamente e omitindo a atualização do listener navigator(_:didChangeSuggestedLightingMode:).
O exemplo a seguir mostra como forçar o mapa a entrar no modo normal ou de pouca luz:
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;
Personalizar as cores da interface em pouca luz
Também é possível personalizar as cores de plano de fundo primária e secundária do cabeçalho de navegação quando o mapa está no modo de pouca luz. Para mais informações sobre como personalizar essas cores, consulte Cores do cabeçalho do modo de pouca luz no guia "Modificar a interface de navegação".