Ios 使用Swift在UIWebView中旋转PDF

Ios 使用Swift在UIWebView中旋转PDF,ios,iphone,swift,pdf,uiwebview,Ios,Iphone,Swift,Pdf,Uiwebview,我得到一个视图,用于在UIWebView中显示不同的PDF文件,该UIWebView将PDF文件作为NSData加载,如下所示: webView.loadData(pdfData, MIMEType: "application/pdf", textEncodingName: "utf-8", baseURL: NSURL()) 现在有一些PDF文件需要通过UIWebView上方的UIButton进行旋转,有没有办法在UIWebView中旋转PDF 到目前为止,我所做的尝试是 webView.t

我得到一个视图,用于在
UIWebView
中显示不同的PDF文件,该
UIWebView
将PDF文件作为
NSData
加载,如下所示:

webView.loadData(pdfData, MIMEType: "application/pdf", textEncodingName: "utf-8", baseURL: NSURL())
现在有一些PDF文件需要通过
UIWebView
上方的
UIButton
进行旋转,有没有办法在
UIWebView
中旋转PDF

到目前为止,我所做的尝试是

webView.transform=cgaffinetTransformMakeRotation(CGFloat(M_PI_2)

但这并没有让我得到我想要的结果。

  • 要在应用程序中旋转单视图控制器,请覆盖
    shouldAutorotate
    方法
  • 检查当前的
    statusBaroOrientation
    ,然后更新
    UIInterfaceOrientation
    ,如下所示:-

    let interfaceOrienation : UIInterfaceOrientation = UIApplication.sharedApplication().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")
    }
    
我为您开发了一个
示例项目
。请按照以下链接下载
完整代码


目前我确实使用此代码进行旋转,但“视图不居中(我认为基于我的自动布局)

示例视频

如果我了解您的问题,那就是在旋转PDF后将其居中,以便从顶部正确显示,不幸的是,
CGAffineTransformMakeRotation
仅此是不够的

你可以做:

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))
要从转换返回,请执行以下操作:

webView.transform = CGAffineTransformIdentity
还有另一种工作方法,但我不建议这样做:

(仅仅为了旋转而处理html页面太长、太难了……)

设置webView->加载响应HTML页面->此响应HTML页面加载PDF->向webView注入以下javascript代码


如果愿意,您也可以从中检查JS。

我想回答这个问题,但在此之前,请为我提供以下答案:-1.是否只更新web视图的框架或旋转特定pdf的屏幕方向。2.是否使用自动布局。@pkc456是的,我使用自动布局,我只想”打开pdf“又名webview内容非常感谢@pkc456,但这会打开整个屏幕,因此“标题栏”也会被打开:-/对于webview顶部的重叠按钮,我正在考虑一种只返回“webview”的方法,为什么您不能在GitHub上发布代码?
webView.transform = CGAffineTransformIdentity
func webViewDidFinishLoad(webView: UIWebView) {
    let js = "document.body.style.setProperty('-webkit-transform', 'rotate(-90deg)', null);"
    webView.stringByEvaluatingJavaScriptFromString(js)
}