Rotar PDF en UIWebView con Swift

UIWebView una vista que se utiliza para mostrar diferentes files PDF en un UIWebView , este UIWebView carga el file PDF como NSData como:

 webView.loadData(pdfData, MIMEType: "application/pdf", textEncodingName: "utf-8", baseURL: NSURL()) 

Ahora hay algunos files PDF que deben rotarse a través del UIButton que está arriba de la UIWebView , ¿hay una manera de rotar el PDF dentro de la UIWebView ?

Lo que intenté hasta ahora fue

webView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2) )

pero esto no me estaba obteniendo el resultado que estaba buscando.

  • Para rotar el único controller de vista en la aplicación, anule el método shouldAutorotate .
  • Verifique el statusBarOrientation actual, luego actualice UIInterfaceOrientation siguiente manera: –

     let interfaceOrienation : UIInterfaceOrientation = UIApplication.shanetworkingApplication().statusBarOrientation if(interfaceOrienation == UIInterfaceOrientation.Portrait){ let value = UIInterfaceOrientation.LandscapeLeft.rawValue UIDevice.currentDevice().setValue(value, forKey: "orientation") }else{ let value = UIInterfaceOrientation.Portrait.rawValue UIDevice.currentDevice().setValue(value, forKey: "orientation") } 

Desarrollé un sample project para ti. Por favor, siga el enlace a continuación para download el full code . https://www.dropbox.com/s/3hk5y9g7v74cbkd/Stackoverflow_webview.zip?dl=0

introduzca la descripción de la imagen aquí

Si he comprendido su problema, es para centrar su PDF después de rotarlo, para mostrarlo correctamente desde la parte superior, por desgracia, CGAffineTransformMakeRotation solo que no es suficiente …

Tu puedes hacer:

 webView.scalesPageToFit = true let scale = CGAffineTransformMakeScale(0.6, 0.6) let translate = CGAffineTransformMakeTranslation(webView.frame.origin.x, webView.frame.origin.y - webView.frame.size.height * 0.25) let transform = CGAffineTransformConcat(translate, scale); webView.transform = CGAffineTransformRotate(transform, CGFloat(M_PI_2)) 

Y para volver atrás de la transformación:

 webView.transform = CGAffineTransformIdentity 

También hay otro método de trabajo, pero no recomiendo hacerlo :

(es demasiado largo y demasiado difícil para manejar la página html solo para hacer una rotation …)

configurar webView -> cargar una página HTML receptiva -> esta página HTML responsiva cargar PDF -> inyectar a la web Ver el siguiente código javascript

 func webViewDidFinishLoad(webView: UIWebView) { let js = "document.body.style.setProperty('-webkit-transform', 'rotate(-90deg)', null);" webView.stringByEvaluatingJavaScriptFromString(js) } 

Puedes verificar tu JS también de JSFiddle si quieres hacerlo.

Actualmente uso este código para rotar, pero la "vista no se mantiene cinput (creo que en function de mi layout automático)

 print(webView.transform) if (webView.transform.a == 1.0 && webView.transform.d == 1.0) {webView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI/2));print("done1")} else if(webView.transform.b == 1.0 && webView.transform.c == -1.0) {webView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI));print("done2")} else if(webView.transform.a == -1.0 && webView.transform.d == -1.0) {webView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI+(M_PI/2)));print("done3")} else if(webView.transform.b == -1.0 && webView.transform.c == 1.0) {webView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI + M_PI));print("done4")} else{print("nothing happens")} 

Ejemplo de vid http://imgur.com/O2Qjuu2