У меня есть небольшое приложение для iPad, которое показывает экземпляр MKMapView (map
). Чтобы сохранить состояние, я пытаюсь сохранить map.region
в NSUserDefaults. Это работает очень хорошо, сохраняя только одинарные значения в виде двойных. При запуске приложение объединяет числа и выдает действительный MKCoordinateRegion
. Это происходит в application:didFinishLaunchingWithOptions:
. Сейчас есть несколько проблем.
1) Представьте себе: вы оставляете приложение в альбомной ориентации. Приложение сохраняет соответствующий MKCoordinateRegion
. Приложение прекращено. Теперь, удерживая планшет iPad, запуская приложение, карта не показывает то же состояние, что и до выхода из приложения. И нет, это не проблема regionThatFits:
. Я разыскал его, и вот что происходит: также, когда он не виден пользователю, приложение запускается в портретном режиме. Приложение восстанавливает его состояние. После этого карта поворачивается в ландшафтный режим.
Другими словами, приложение сохраняет ландшафтное состояние, но восстанавливает его в портретном. Если вы повторите эти шаги, карта будет уменьшаться при каждом запуске. Не лучший UX.
2) Даже если бы проблему удалось решить, восстановив правильную ориентацию, все еще существует проблема, заключающаяся в том, что ориентация запуска может отличаться от ориентации ухода. Я думаю, что один из лучших способов решить эту проблему - всегда сохранять значения для книжной ориентации, даже когда пользователь уходит в альбомной ориентации. При этом состояние будет восстановлено должным образом, потому что приложение изначально запускается системой в портретном режиме.
Одним из возможных способов было бы изменить значения широты / долготы, если приложение оставлено в альбомной ориентации. Но это было бы слишком неточно, потому что CLLocationDegrees
отличаются, если они широта или долгота.
Другим способом (и я думаю, что это будет наилучшим способом) было бы «смоделировать» вращение вида карты или вычислить видимую область для портретного режима, когда приложение оставлено. Но я действительно не знаю, как это сделать. Здесь вам нужна ваша помощь и ваши идеи.
Я ценю каждый луч надежды. :) - И, пожалуйста, скажите мне, если я думаю, что в неправильном направлении.