7

我正在从 切换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];
}
4

5 回答 5

8

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

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

我突然想到,可以修改网站的 HTML 代码,使其看起来更像 Reader。似乎有些服务已经这样做了,比如 Readability:

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

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

于 2014-10-11T16:44:06.147 回答
8

只需改进@dzensik 的答案,因为 'init(url:entersReaderIfAvailable:)' 在 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)
        }
    }
于 2018-03-16T18:32:55.263 回答
7

@dfmuir 是对的,UIWebView 或 WKWebView 不提供阅读器模式。但是,正如 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)
    }
}
于 2016-07-15T17:53:51.893 回答
3

首先要做的事:导入 SafariServices:

#import <SafariServices/SafariServices.h>

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

  • 仅使用基本 URL 创建
  • 使用基本 URL 创建并输入“阅读模式”以防万一
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];
于 2015-11-18T07:16:43.167 回答
0

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

只需使用此代码...</p>

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 测试版完成

于 2020-07-09T13:48:16.133 回答