首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何迁移到WKWebView?

如何迁移到WKWebView?
EN

Stack Overflow用户
提问于 2014-09-04 20:09:54
回答 9查看 111.3K关注 0票数 69

我正在尝试了解如何在iOS8中使用新的WKWebView,找不到太多信息。我读过:

http://developer.telerik.com/featured/why-ios-8s-wkwebview-is-a-big-deal-for-hybrid-development/ http://nshipster.com/wkwebkit/

但这对现有的应用程序有什么影响呢?一个普通的UiWebView会从nitro java脚本引擎中获得加速吗?还是我们需要做一些改变?我们如何处理向后兼容性?

我能找到的所有代码和示例都在使用swift,这是强制性的吗?

感谢在这件事上的任何帮助!

EN

回答 9

Stack Overflow用户

发布于 2014-10-25 12:34:40

UIWebView仍将继续使用现有的应用程序。从iOS8开始提供WKWebView,只有WKWebView有Nitro JavaScript引擎。

要在较旧的应用程序中利用这种更快的JavaScript引擎,您必须更改代码以使用WKWebView而不是UIWebView。对于iOS7和更早的版本,您必须继续使用UIWebView,因此您可能必须检查iOS8,然后将WKWebView方法/委托方法应用于iOS7和更早版本的UIWebView方法。此外,目前还没有用于WKWebView的接口生成器组件,因此您必须以编程方式实现WKWebView

您可以在Objective-C中实现WKWebView,下面是一个初始化WKWebView的简单示例

代码语言:javascript
运行
复制
WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
webView.navigationDelegate = self;
NSURL *nsurl=[NSURL URLWithString:@"http://www.apple.com"];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webView loadRequest:nsrequest];
[self.view addSubview:webView];

在WebGL游戏和运行复杂JavaScript算法的东西中,WKWebView渲染性能是值得注意的,如果你使用webview加载简单的html或网站,你可以继续使用UIWebView

以下是一个测试app,可用于使用UIWebViewWKWebView打开任何网站,您可以比较性能,然后决定升级您的应用程序以使用WKWebViewhttps://itunes.apple.com/app/id928647773?mt=8&at=10ltWQ

票数 68
EN

Stack Overflow用户

发布于 2014-12-05 03:27:51

下面是我从UIWebView过渡到WKWebView的过程。

注意:没有像UIWebView这样的属性可以拖到你的故事板上,你必须通过编程来完成。

确保将WebKit/WebKit.h导入到头文件中。

这是我的头文件:

代码语言:javascript
运行
复制
#import <WebKit/WebKit.h>

@interface ViewController : UIViewController

@property(strong,nonatomic) WKWebView *webView;
@property (strong, nonatomic) NSString *productURL;

@end

下面是我的实现文件:

代码语言:javascript
运行
复制
#import "ViewController.h"

@interface ViewController ()

@end


@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.productURL = @"http://www.URL YOU WANT TO VIEW GOES HERE";

    NSURL *url = [NSURL URLWithString:self.productURL];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    _webView = [[WKWebView alloc] initWithFrame:self.view.frame];  
    [_webView loadRequest:request];
    _webView.frame = CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height);
    [self.view addSubview:_webView];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
票数 50
EN

Stack Overflow用户

发布于 2016-06-01 14:19:18

步骤: 1ViewController.swift中导入webkit

代码语言:javascript
运行
复制
import WebKit

步骤: 2声明webView的变量。

代码语言:javascript
运行
复制
var webView : WKWebView!

步骤: 3添加WKNavigationDelegate的委托

代码语言:javascript
运行
复制
class ViewController: UIViewController , WKNavigationDelegate{

步骤:4在ViewDidLoad中添加代码。

代码语言:javascript
运行
复制
let myBlog = "https://iosdevcenters.blogspot.com/"
let url = NSURL(string: myBlog)
let request = NSURLRequest(URL: url!)

// init and load request in webview.
webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
webView.loadRequest(request)
self.view.addSubview(webView)
self.view.sendSubviewToBack(webView)

步骤: 5编辑info.plist添加

代码语言:javascript
运行
复制
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>google.com</key>
<dict>
    <key>NSExceptionAllowsInsecureHTTPLoads</key>
    <true/>
    <key>NSIncludesSubdomains</key>
    <true/>
</dict>
</dict>
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25665141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档