Ios WKWebView阅读器视图
我正在从Ios WKWebView阅读器视图,ios,objective-c,uiwebview,ios8,wkwebview,Ios,Objective C,Uiwebview,Ios8,Wkwebview,我正在从UIWebView切换到WKWebView,而无法确定如何设置使用阅读器的配置 有人能帮我吗 viewDidLoad: WKWebViewConfiguration *config = [NSClassFromString(@"WKWebViewConfiguration") alloc] init]; // Configuration of Reader goes here? wkWebView = [[wkWebViewClass alloc] initWithFr
UIWebView
切换到WKWebView
,而无法确定如何设置使用阅读器的配置
有人能帮我吗
viewDidLoad
:
WKWebViewConfiguration *config = [NSClassFromString(@"WKWebViewConfiguration") alloc] init];
// Configuration of Reader goes here?
wkWebView = [[wkWebViewClass alloc] initWithFrame:frame configuration:config];
[self.view addSubview:wkWebView];
}
不能为WKWebView(或UIWebView)启用“阅读器”模式
编辑:但是,您可以使用SFSafariViewController执行此操作,如其他解决方案中所示
我突然想到,可以修改网站的HTML代码,使它看起来更像一个阅读器。似乎有一些服务已经做到了这一点,比如可读性:
只需将此URL加载到您的WKWebView中:
这将帮助您实现与Reader类似的功能。第一件事:导入Safaries服务:
#import <SafariServices/SafariServices.h>
@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)
}
}
只需改进@dzensik答案,因为iOS 11.0中不推荐使用“init(url:entersreadifavailable:)”
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)
}
}
您可以使用JavaScript启用reader视图
只要使用这个代码
webView.evaluateJavaScript("document.body.innerText”)
此代码正在获取网页中的文本
以下是reader view的全部代码
@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)
}
}
@iAction func ReaderViewTougle(\uSender:Any){
evaluateJavaScript(“document.body.innerText”){result,错误在
打印(结果!)
self.webView.loadHTMLString(“”)
h1{
字体大小:正常;
align=“justify”;
颜色:灰色;
线高:1.6;
}
错误
\(字符串(描述:self.webView.title))
\(字符串(描述:结果))
“”,baseURL:self.webView.url)
}
}
使用Xcode 12 beta版完成很酷很高兴知道没有办法这么做。之前已经检查过可读性资料。假设苹果在WKWebKit中提供了访问其阅读器模式的权限。Readability.com不再是可用的Perfect!这正是我在Swift 3的url上默认输入Reader view所需的内容。
@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)
}
}