我正在从UIWebView
切换到 WKWebView
,无法弄清楚如何设置我的配置以使用Reader
。
有没有人可以帮助我?
viewDidLoad
:
WKWebViewConfiguration *config = [NSClassFromString(@"WKWebViewConfiguration") alloc] init];
// Configuration of Reader goes here?
wkWebView = [[wkWebViewClass alloc] initWithFrame:frame configuration:config];
[self.view addSubview:wkWebView];
}
答案 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并将其添加为子视图。我们有两种选择:
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完成