iOS小白成长之路

iOS高德地图适配暗黑模式

2020-04-15  本文已影响0人  李有钱灬

iOS13以后iOS开发者讨论最大的应该就是暗黑模式了,我自己最近也在加班加点地为公司所有iOS项目适配暗黑模式,具体做法网上很多说明,适配的方式虽然很繁琐但也很简单,这里就不多做赘述,主要讲一下高德地图适配暗黑模式的方式,Let's do IT!

主要方式有两种,各位可以根据实际项目进行选择

一、使用默认高德地图样式的可以在切换暗黑模式时改变高德地图的mapType,具体如下:

- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
    
    if (previousTraitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
        
        self.mapView.mapType = MAMapTypeStandard;
    } else {
        
        self.mapView.mapType = MAMapTypeStandardNight;
    }
}

二、自定义高德地图样式setCustomMapStyleWithWebData,具体如下:

  1. 高德地图后台自定义一个默认模式地图样式和一个暗黑模式地图样式,定义好后发布-下载,将两个.data的包导入项目中
  2. 在切换暗黑模式时直接设置自定义地图样式即可
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
        
    NSString *path = [NSString stringWithFormat:@"%@/style.data", [NSBundle mainBundle].bundlePath];
    
    if (previousTraitCollection.userInterfaceStyle == UIUserInterfaceStyleLight) {
        path = [NSString stringWithFormat:@"%@/style_night.data", [NSBundle mainBundle].bundlePath];
    }
    
    NSData *data = [NSData dataWithContentsOfFile:path];
    [self.mapView setCustomMapStyleWithWebData:data];
}

一点疑惑:如果是自定义了地图样式(setCustomMapStyleWithWebData),再设置mapType为MAMapTypeStandardNight时会崩溃,而设置为其他模式如:MAMapTypeSatellite时却不会崩溃,不知道为什么

上一篇下一篇

猜你喜欢

热点阅读