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)
}