Ho finito per usare il secondo approccio di @Sergey Kuryanov dal momento che il primo non ha funzionato per me. Stavo usando il metodo loadHTMLString
di UIWebView, quindi lo vedrai nel codice ma puoi sostituirlo con qualsiasi metodo tu stia utilizzando per caricare i dati in UIWebView.
La prima cosa da fare era iscriversi alle notifiche di rotazione. Per farlo ho seguito la risposta di @ clearwater82 sull'argomento in questa domanda: How to detect rotation for a programatically generated UIView
Ho riscritto la sua risposta per Swift 3, lo puoi trovare nella stessa pagina.
Una volta eseguito, è stato facile ricaricare i dati in UIWebView utilizzando loadHTMLString
. Il mio approccio era quello di avvolgere UIWebView all'interno di una vista personalizzata in modo da poter gestire anche alcune formattazioni dell'HTML direttamente nella mia vista personalizzata. Ciò ha reso molto semplice aggiungere la funzione "ricarica-su-rotazione". Ecco il codice che ho usato, maggiori dettagli nella risposta collegato:
// 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()
}
Voglio solo far notare due cose:
self.htmlText
è una variabile che tiene il testo HTML voglio caricare che ho aggiunto alla mia vista personalizzata
- l'uso di
UIDevice.current.endGeneratingDeviceOrientationNotifications()
era appropriato per la mia situazione, potrebbe non essere per il vostro
Questo è tutto, acclamazioni
fonte
2017-03-15 09:12:36
Vedere http: // stackoverflow.it/questions/6007904/uiwebview-donest-ridimensiona-correttamente-quando-orientamento-modifica – buley