【问题标题】:How do I make my UIWebView's content fit the screen and add zoom scaling as well?如何使 UIWebView 的内容适合屏幕并添加缩放比例?
【发布时间】:2015-09-12 06:26:15
【问题描述】:

我希望 UIWebView 中的内容适合屏幕,这是我 UIWebView 中 PDF 的当前状态:

这就是我希望它的外观,适合屏幕,每个页面的边缘到边缘:

而且我的 UIWebView 也不允许我放大或缩小页面,我该如何解决这两个问题?

这是我的代码:

class PdfViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet var myWebView: UIWebView!

    @IBOutlet var progressView: UIProgressView!

    var hasFinishedLoading = false


    override func viewDidLoad() {
        super.viewDidLoad()

        myWebView.delegate = self

        let url: NSURL! = NSURL(string: contentUrlPassedOn)
        myWebView.loadRequest(NSURLRequest(URL: url))

        self.myWebView.userInteractionEnabled = false
        self.myWebView.scalesPageToFit = true
        myWebView.contentMode = UIViewContentMode.ScaleAspectFit
        myWebView.frame = self.view.frame
        myWebView.scrollView.bouncesZoom = true

    }

    func webViewDidStartLoad(webView: UIWebView) {
        var hasFinishedLoading = false

        updateProgress()
    }

    func webViewDidFinishLoad(webView: UIWebView) {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(1.0 * Double(NSEC_PER_SEC))),
            dispatch_get_main_queue()) {
                [weak self] in
                if let _self = self {
                    _self.hasFinishedLoading = true
            }
        }
    }

    deinit {
        myWebView.stopLoading()
        myWebView.delegate = nil
    }

    func updateProgress(){
        if progressView.progress >= 1 {
            self.progressView.fadeOut()
            self.imageView.fadeOut()
            self.backgroundImageView.fadeOut()
            self.titleLabel.fadeOut()
            self.myWebView.userInteractionEnabled = true
        } else {
            if hasFinishedLoading {
                progressView.progress += 0.002
            } else {
                if progressView.progress <= 0.3 {
                    progressView.progress += 0.004
                } else if progressView.progress <= 0.6 {
                    progressView.progress += 0.002
                } else if progressView.progress <= 0.9 {
                    progressView.progress += 0.001
                } else if progressView.progress <= 0.94 {
                    progressView.progress += 0.0001
                } else {
                    progressView.progress = 0.9401
                }
            }

            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.008 * Double(NSEC_PER_SEC))),
                dispatch_get_main_queue()) {
                    [weak self] in
                    if let _self = self {
                        _self.updateProgress()
                    }
             }
      }
}

谢谢

【问题讨论】:

  • 设置[myWebview setScalesPageToFit:TRUE]; 并尝试。
  • 我做到了,页面仍然没有与侧面齐平。虽然它确实解决了缩放问题@CuteAngel
  • 显示您的代码...请

标签: ios swift pdf uiwebview


【解决方案1】:

更新您的viewDidLoad() 如下:

override func viewDidLoad() {
    super.viewDidLoad()

    self.myWebView.delegate = self
    self.myWebView.scalesPageToFit = true
    //self.myWebView.frame = self.view.frame
    //self.myWebView.contentMode = UIViewContentMode.ScaleAspectFit
    //self.myWebView.userInteractionEnabled = false
    //self.myWebView.scrollView.bouncesZoom = true

    let url: NSURL! = NSURL(string: self.contentUrlPassedOn)
    self.myWebView.loadRequest(NSURLRequest(URL: url))
}

并在使用前声明 URL 字符串。

@IBOutlet var myWebView: UIWebView!
@IBOutlet var progressView: UIProgressView!
var hasFinishedLoading = false
var contentUrlPassedOn:String! 

确保插座在.xibstoryboard 中设置完美

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 2020-02-22
    • 1970-01-01
    • 2014-06-08
    • 2021-02-27
    • 2012-05-19
    • 2011-07-23
    • 2016-07-23
    • 2010-12-03
    相关资源
    最近更新 更多