如何将地图从iOS 13更改为暗模式?
我已经选择退出UserInterfaceStyle,所以系统范围的颜色将不适用于我,所以我将手动执行。
我在8:19看到了苹果WWDC2019-会话236的这段视频,但那是快照,我没有得到。
事实上,我在尝试类似的东西:
private var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.backgroundColor = .black
}
但它并没有将主题、外观或traitCollection改变为黑暗。
有什么建议吗?
这是您在viewDidLoad 上所需要的
if #available(iOS 13.0, *) {
self.overrideUserInterfaceStyle = .dark
}
在viewDidLoad方法上设置overrideUserInterfaceStyle将强制视图控制器使用您指定的所需模式。
if #available(iOS 13.0, *) {
overrideUserInterfaceStyle = .light
}
MapSnapShot
如果你试图拍摄快照,并与输出图像的颜色混淆,请使用
if #available(iOS 13.0, *) {
mapSnapshotOptions.traitCollection = traitCollection
}
MKMapSnapshoter 的完整代码
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)
}
如果你在这里搜索macOS解决方案(像我一样(,只需更新MKMapView:上的外观属性
if #available(OSX 10.14, *) {
mapView.appearance = NSAppearance(named: .darkAqua) // .aqua for default mode
}