如何将 MKMapView 转为暗模式?
How can I turn the MKMapView for dark mode?
如何将地图从 iOS13 更改为深色模式?
我已选择退出 UserInterfaceStyle,因此系统范围的颜色将不适用于我,因此我将手动完成。
我看过这个来自 apple WWDC2019 - Session 236, at 8:19s 的视频,但那是快照,我没看懂。
实际上我正在尝试类似的东西:
private var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.backgroundColor = .black
}
但它不会将主题或外观或 traitCollection 更改为深色。
有什么建议吗?
这就是您在 viewDidLoad 上所需要的
if #available(iOS 13.0, *) {
self.overrideUserInterfaceStyle = .dark
}
如果您是来这里寻找 macOS 解决方案的(像我一样),只需更新 MKMapView 上的外观 属性:
if #available(OSX 10.14, *) {
mapView.appearance = NSAppearance(named: .darkAqua) // .aqua for default mode
}
在 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)
}
如何将地图从 iOS13 更改为深色模式?
我已选择退出 UserInterfaceStyle,因此系统范围的颜色将不适用于我,因此我将手动完成。
我看过这个来自 apple WWDC2019 - Session 236, at 8:19s 的视频,但那是快照,我没看懂。
实际上我正在尝试类似的东西:
private var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.backgroundColor = .black
}
但它不会将主题或外观或 traitCollection 更改为深色。
有什么建议吗?
这就是您在 viewDidLoad 上所需要的
if #available(iOS 13.0, *) {
self.overrideUserInterfaceStyle = .dark
}
如果您是来这里寻找 macOS 解决方案的(像我一样),只需更新 MKMapView 上的外观 属性:
if #available(OSX 10.14, *) {
mapView.appearance = NSAppearance(named: .darkAqua) // .aqua for default mode
}
在 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)
}