如何将MKMapView设为黑暗模式?

时间:2019-10-25 19:59:56

标签: swift mapkit ios13 ios-darkmode

如何从 iOS 13 将地图更改为暗模式?

我已选择退出UserInterfaceStyle,因此系统范围的颜色将不适用于我,因此我将手动进行。

我已经看过来自苹果WWDC2019 - Session 236, at 8:19s的视频,但这是用于快照的,我没有得到。

实际上我在尝试类似的事情:

private var mapView: MKMapView!

override func viewDidLoad() {
        super.viewDidLoad()
 mapView.backgroundColor = .black       
}

,但不会将主题或外观或traitCollection更改为黑暗。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

在viewDidLoad方法上设置 overrideUserInterfaceStyle 会强制该视图控制器使用您指定的所需模式。

 if #available(iOS 13.0, *) {
     overrideUserInterfaceStyle = .light
 }

MapSnapShot

如果您要拍摄快照并与输出图像颜色混淆,请使用

 if #available(iOS 13.0, *) {
     mapSnapshotOptions.traitCollection = traitCollection
 }

MKMapSnapshotter的完整代码

func mapCamera(location : CLLocationCoordinate2D )-> MKMapSnapshotter {
    let mapSnapshotOptions = MKMapSnapshotter.Options()
       
    let region = MKCoordinateRegion(center: location, latitudinalMeters: 500, longitudinalMeters: 500)
    mapSnapshotOptions.region = region
    mapSnapshotOptions.scale = UIScreen.main.scale
    mapSnapshotOptions.size = AppConstants.Size.mapDetailView
    mapSnapshotOptions.showsBuildings = true
    mapSnapshotOptions.showsPointsOfInterest = true
    if #available(iOS 13.0, *) {
        mapSnapshotOptions.traitCollection = traitCollection
    }
    return MKMapSnapshotter(options: mapSnapshotOptions)
}

答案 1 :(得分:1)

这是您需要的viewDidLoad

if #available(iOS 13.0, *) {
self.overrideUserInterfaceStyle = .dark
}

答案 2 :(得分:1)

如果您是在这里搜索macOS解决方案的(像我一样),只需更新MKMapView上的外观属性:

<button id="inc" onclick="move(1)">Inc</button>
<button id="dec" onclick="move(-1)">Dec</button>