Я могу сделать снимок MKMapView
в портретном режиме, но не в ландшафтном режиме.Я автоматически поворачиваю UIView
в горизонтальное положение, используя функции, приведенные ниже.Я могу видеть вид карты как повернутый к пейзажу.Но когда я делаю снимок, используя MKMapSnapshotter
, я снова получаю изображение с картой в портретном режиме.
override var shouldAutorotate: Bool {
return true
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return .landscapeLeft
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .landscapeLeft
}
Я догадываюсь, что это как-то связано с установкой MKMapSnapshotOptions
в альбомную ориентацию, но яне уверен, как это сделать.
let mapSnapshotOptions = MKMapSnapshotOptions()
mapSnapshotOptions.region = mapView.region
mapSnapshotOptions.scale = UIScreen.main.scale
mapSnapshotOptions.size = mapView.frame.size
Я ожидаю, что приведенный выше код должен был обработать его, поскольку представление карты уже повернуто на альбомную, но это не так.
mapView.frame.size = (375.0, 647.0)
Я наблюдаю одинаковое значение фрейма mapView для обоих случаев: портретного и ландшафтного.
Я пытался использовать CLLocationManagerDelegate
.Но без выгоды.Приведенная ниже функция вызывается, когда параметры моментального снимка уже установлены.
func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
// heading is updated for delegates only after any transition has ended
// therefore, snapshot properties are set already by the time program reaches this function
mapView.camera.heading = newHeading.magneticHeading
mapView.setCamera(mapView.camera, animated: true)
}
Пожалуйста, предложите, что еще можно сделать?