3

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

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

我在苹果WWDC2019 - Session 236,8:19s看到了这段视频,但那是快照,我没听懂。

实际上我正在尝试类似的东西:

private var mapView: MKMapView!

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

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

有什么建议吗?

4

3 回答 3

13

这就是你在 viewDidLoad 上需要的

if #available(iOS 13.0, *) {
    self.overrideUserInterfaceStyle = .dark
}
于 2019-10-25T20:41:22.747 回答
5

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

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

地图快照

如果您尝试拍摄快照并与输出图像颜色混淆使用

 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)
}
于 2020-04-02T02:57:07.177 回答
1

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

if #available(OSX 10.14, *) {
    mapView.appearance = NSAppearance(named: .darkAqua) // .aqua for default mode
}
于 2019-12-14T14:06:11.090 回答