WKWebView阅读器视图

时间:2014-10-05 02:41:52

标签: ios objective-c uiwebview ios8 wkwebview

我正在从UIWebView切换到 WKWebView 无法弄清楚如何设置我的配置以使用Reader
enter image description here

有没有人可以帮助我?

viewDidLoad

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

5 个答案:

答案 0 :(得分:7)

您无法为WKWebView(或UIWebView)启用“阅读器”模式。

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

我觉得可以修改网站的HTML代码,使其看起来更像是Reader。似乎已经有了这样的服务,比如可读性:

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

这可以帮助您实现与Reader类似的功能。

答案 1 :(得分: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)
    }
}

答案 2 :(得分:4)

只需改进@dzensik的答案,因为' init(url:enteringReaderIfAvailable :)'在iOS 11.0中已弃用。

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

答案 3 :(得分:3)

首先要做的事情是:导入SafariServices:

#import <SafariServices/SafariServices.h>

之后我们将实例化SFSafariViewController并将其添加为子视图。我们有两种选择:

  • 仅使用基本网址创建
  • 使用基本网址创建以及输入“阅读模式”&#39;如果可以的话
NSString *sURL = @"http://google.com";

NSURL *URL = [NSURL URLWithString:sURL];

SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL]; // 1.

SFSafariViewController *safari = [[SFSafariViewController alloc] initWithURL:URL entersReaderIfAvailable:YES]; // 2.

[self presentViewController:safari animated:YES completion:nil];

答案 4 :(得分:0)

您可以使用JavaScript启用阅读器视图。

只需使用此代码...

webView.evaluateJavaScript("document.body.innerText”)

此代码在网页中获取文本

这是供读者查看的全部代码

@IBAction func readerViewtoogle(_ sender: Any) {
        webView.evaluateJavaScript("document.body.innerText") { result, error in
            print(result!)
            self.webView.loadHTMLString("""
                <!DOCTYPE html>
                <html>
                <style>
h1{
font-weight: normal;
align="justify";
color: grey;
line-height: 1.6;
}
                </style>
                <head>
                <title>Error</title>
                </head>
                <body style="background-color:black">
                <h1 style="text-align:center;">\(String(describing: self.webView.title))</h1>
                <br>
                <hr>
                <h1 style="text-align:justify;">\(String(describing: result))</h1>
                <br>
                <br>
                <br>
                </body>
                </html>
""", baseURL: self.webView.url)
        }
    }

使用Xcode 12 beta完成