WKWebView阅读器视图

5 objective-c uiwebview ios ios8 wkwebview

我正在切换UIWebViewWKWebView,并且无法弄清楚如何设置我的配置以供使用Reader.
在此输入图像描述

有没有人可以帮助我?

viewDidLoad:

WKWebViewConfiguration *config = [NSClassFromString(@"WKWebViewConfiguration") alloc] init];
    // Configuration of Reader goes here?
    wkWebView = [[wkWebViewClass alloc] initWithFrame:frame configuration:config];
    [self.view addSubview:wkWebView];
}
Run Code Online (Sandbox Code Playgroud)

dfm*_*uir 7

您无法为WKWebView(或UIWebView)启用"Reader"模式.

编辑:您可以使用SFSafariViewController执行此操作,如其他解决方案中所示.

在我看来,可以修改网站的HTML代码,使其看起来更像Reader.看来有些服务已经做到这一点,比如可读性:

只需将此URL加载到WKWebView中:http://www.readability.com/m? url = YOUR_URL_HERE

这应该可以帮助您实现与Reader类似的功能.

  • Readability.com不再可用 (3认同)

dze*_*sik 7

@dfmuir是对的,UIWebView或WKWebView不提供Reader Mode.但是,正如Baig所说,你可以使用SFSafariViewController来实现这一点.在这里,我们使用一个简单而有效的Swift代码来实现:

import UIKit
import SafariServices

class ViewController: UIViewController {

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)

        let urlString = "http://google.com"
        let url = URL(string: urlString)
        let safariVC = SFSafariViewController(url: url!, entersReaderIfAvailable: true)
        present(safariVC, animated: true, completion: nil)
    }
}
Run Code Online (Sandbox Code Playgroud)


Hen*_*mah 5

只需改善@dzensik答案即可,因为iOS 11.0中不推荐使用'init(url:entersReaderIfAvailable :)'。

import UIKit
import SafariServices

    class ViewController: UIViewController {

        override func viewDidAppear(_ animated: Bool) {
            super.viewDidAppear(true)

            let urlString = "http://google.com"
            let url = URL(string: urlString)
            let configuration = SFSafariViewController.Configuration()
            configuration.entersReaderIfAvailable = true

            let safariVC = SFSafariViewController(url: url!, configuration: configuration)
            present(safariVC, animated: true, completion: nil)
        }
    }
Run Code Online (Sandbox Code Playgroud)