В итоге я воспользовался вторым подходом @Sergey Kuryanov, так как первый мне не помог.Я использовал метод loadHTMLString
UIWebView, так что вы увидите это в коде, но вы можете заменить его любым методом, который вы используете для загрузки данных в UIWebView.
Первое, что нужно сделать, это подписаться на ротацию.уведомления.Для этого я последовал ответу @ clearwater82 по этому вопросу в этом вопросе: Как обнаружить вращение для программно сгенерированного UIView
Я переписал его ответ для Swift 3, вы можете найти его на той же странице.
Как только это было сделано, было легко перезагрузить данные в UIWebView, используя loadHTMLString
.Мой подход заключался в том, чтобы обернуть UIWebView внутри пользовательского представления, чтобы я мог также обрабатывать некоторое форматирование HTML непосредственно внутри своего пользовательского представления.Это позволило очень просто добавить функцию «перезагрузить при вращении».Вот код, который я использовал, более подробно в связанном ответе:
// Handle rotation
UIDevice.current.beginGeneratingDeviceOrientationNotifications()
NotificationCenter.default.addObserver(
self,
selector: #selector(self.orientationChanged(notification:)),
name: NSNotification.Name.UIDeviceOrientationDidChange,
object: nil
)
// Called when device orientation changes
func orientationChanged(notification: Notification) {
// handle rotation here
self.webView.loadHTMLString(self.htmlText, baseURL: nil)
}
deinit {
NotificationCenter.default.removeObserver(self)
UIDevice.current.endGeneratingDeviceOrientationNotifications()
}
Я просто хочу указать на две вещи:
self.htmlText
- это переменная, содержащая HTMLтекст, который я хочу загрузить, который я добавил в свой пользовательский вид - использование
UIDevice.current.endGeneratingDeviceOrientationNotifications()
подходило для моей ситуации, оно может не подходить для вашего
Вот и все, ура