移动开发干货店码农的世界程序员

IOS--将网页载入程序案例并解决加载失败的方法

2019-04-05  本文已影响16人  星辰_入海
“清明时节雨纷纷,路上行人欲断魂。”,今天是清明节,小编也是奔波许久才回到家中,今天我们来制作一个关于导入清明节网站的Demo。(下面是小编自己做的一个案例)
图1--导航页面
图2--载入简书网站
图3--载入4399网页

再看过小编的案例后,是不是自己也有想法做一个呢,今天让小编带着大家看一下如何将网页载入到程序中,和以往相同,今天侧重点仍然是代码部分的书写。

一.网页的主要内容

大家不要误会,这里的主要内容是指是网页的域名。
http://mail.163.com/index.html

1)http://:这个是协议,也就是HTTP超文本传输协议,也就是网页在网上传输的协议。

2)mail:这个是服务器名,代表着是一个邮箱服务器,所以是mail.

3)163.com:这个是域名,是用来定位网站的独一无二的名字。

4)mail.163.com:这个是网站名,由服务器名+域名组成。

5)/:这个是根目录,也就是说,通过网站名找到服务器,然后在服务器存放网页的根目录

6:)index.html:这个是根目录下的默认网页(当然,163的默认网页是不是这个我不知道,只是大部分的默认网页,都是index.html)

7)http://mail.163.com/index.html:这个叫做URL,统一资源定位符,全球性地址,用于定位网上的资源。

注意:这里面提及了URL这个名词,她正事我要介绍的NSURL的一部分,在简单了解了网址的构成后,我们正式通过代码来书写程序吧

二.代码实现部分

1.私有化webView
@property (nonamatic,strong) WKWebView *webview;
2.读取网页
//创建webView
self.webView = [[WKWebView alloc] initWithFrame:CGRectMake(0,50,screen.size,width,screen.size,height)];
NSString *urlStr = @"https://baike.baidu.com/item/%E6%B8%85%E6%98%8E%E8%8A%82%E4%B9%A0%E4%BF%97/4155712";
NSURL *url = [[NSURL alloc] initWithString urlStr];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
self.webView.navigationDelegate = self;
[self.view addSubview:self.webView];
3.实现委托协议
- (void)webView:(WebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
      NSLog(@"开始加载");
      self.webView.allowBackForwardNavigationGestures = YES; //滑动返回上一页
      [self.webView configuration];  //保存网页浏览信息
}

- (void)webView:(WebView *)webView didCommitNavagation:(WKNavigation *)navigation{
      NSLog(@"内荣开始返回");
}

- (void)webView:(WebView *)webView didFinishNavagation:(WKNavigation *)navigation{
      NSLog(@"加载完成");
}

- (void)webView:(WebView *)webView didFialProvisionNavagation:(WKNavigation *)navigation withError:(NSError *)error {
      NSLog(@"加载失败");
}

三.代码分析

四.加载失败解决方法

当你是第一次使用的小白时候,会发现不论怎么设置网页(代码正确的前提下)你将无法加载成功,此时我们需要进行解决此类办法

产生这个问题的原因是Xcode本身将访问http域名的限制权限关闭了,此时只用打开权限才能解决问题

步骤:
1.打开项目工程组(小编前几章有所提及)的info文件;
2.进行添加App Transport Secutiry;
3.在App Transport Secutiry中添加(Add Row)Allow Arbitrary Loads in Web Content;
4.将默认值修改为YES;
5.重新运行即可

五.展示网页内容

图4--网页内容.PNG

六.加载本地网页

上面的教程是加载非本地网页,使用异步加载,现在我们讨论如何加载本地网页,当加载本地网页时候使用同步加载
代码教程如下

NSString *htmlPath = [[NSBundle mainBundle] pathForRescource:@"index" ofType:@"html"];
NSURL *bundleUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
NSError *error = nil;

NSString *html = [[NSString alloc] initWithContentOfFile:htmlPath encoding:NSUTF8StringEncoding error:&error]];

if(error == nil){
  [self.view addSubview:self.webView];
}

代码解析

总结:

通过非本地加载和本地加载,小白们可以使用此方法来调用网页,同时可以使用按钮等控件创建目标(addTarget)来调用网页。对于今天的知识用什么不理解的地方,可以留言评论区进行讨论。

上一篇 下一篇

猜你喜欢

热点阅读