【iOS进阶】【Web基础】1-网络编程基础、UIWebView
一、网络基础
1>为什么要学习网络编程?
1.在移动互联网时代,移动应用,只有通过网络进行数据交互,才能保持活力!缺少了数据变化,无论多么华丽的应用,终将变成一潭死水
2.移动网络应用(良好的UI+良好的用户体验):
即时通讯:QQ
新闻:网易、凤凰新闻
视频:优酷、百度视频
音乐:虾米、QQ音乐
照片:Facebook、Flickr
LBS(基于位置服务):高德、大众点评、墨迹天气、滴滴、快的
电商:淘宝、天猫、京东
所罗门SoLoMo(社交+本地化+移动):微信、微博、陌陌、比邻
……
3.学习网络编程是开发出优秀网络应用的基础和前提
2>什么是网络
1.在计算机领域中,网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息连接到一起,从而实现这些资源的共享
2.互联网上是如何识别每一台计算机的 —— IP地址
IP地址被用来给Internet上的电脑一个编号,不容易记忆
人们更习惯使用域名访问网络上的计算机
3.互联网上是如何访问资源的 —— 协议
网络中的计算机要能够互相顺利的通信,就必须讲同样的语言,这个语言就相当于协议
4.互联网上是如何定位资源的 —— URL
统一资源定位符(Uniform Resource Locator,缩写为URL)是对互联网上资源位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
互联网上的每个资源都有一个唯一的URL,它包含的信息指出该资源的位置
5.互联网上是如何传输数据的 —— 二进制流
3>URL示例(网址)
二、UIWebView
1>什么是UIWebView
UIWebView是iOS内置的浏览器控件,可以浏览网页、打开文档等,能够加载html/htm、pdf、docx、txt等格式的文件
系统自带的Safari浏览器就是通过UIWebView实现的
2>UIWebView使用三步曲
3>UIWebView演练
1.实现百度搜索,使用UISearchBar(搜索栏)控件,让控制器实现UISearchBarDelegate代理
#pragma mark - UISearchBarDelegate搜索栏代理方法 /** * 开始搜索,在搜索栏处按下确认的时候调用 */ -(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{ //1.1 URL 定位资源,需要资源的地址 NSString *str = searchBar.text; //1.2 判断是否以http开头,如果没有则用百度搜索 if (![str hasPrefix:@"http://"]) { str = [NSString stringWithFormat:@"http://m.baidu.com/s?word=%@", str]; } //1.3 NSURL *url = [NSURL URLWithString:str]; //2. 把URL告诉给服务器 NSURLRequest *request = [NSURLRequest requestWithURL:url]; //3. 发送请求给服务器 [self.webView loadRequest:request]; NSLog(@"开始搜索 - %@",searchBar.text); } /** * 文本改变,搜索栏上文本发生改变的时候就会调用 */ -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ NSLog(@"文本改变 - %@",searchText); }
2.实现前进后退
(1)在窗口底部增加一个工具栏,工具栏包含后退,前进两个按钮
(2)右键Web View,设置goBack、goForward属性,如下图
(3)让控制器实现UIWebViewDelegate代理,并实现webViewDidFinishLoad方法
#pragma mark - WebView代理方法 #pragma mark 完成加载,页面链表数据会更新 -(void)webViewDidFinishLoad:(UIWebView *)webView{ //根据wenView的状态,设置后退、前进键是否可交互 //canGoBack,是否可以后退 self.goBack.enabled = webView.canGoBack; //canGoForward,是否可以前进 self.goForward.enabled = webView.canGoForward; }
4>UIWebView小结
1.优点
使用简单
NSURL 确定要访问的网络资源
NSURLRequest 建立网络请求
能够方便地展现丰富的页面内容
在开发中,通常遇到不方便排版的内容,会考虑选择UIWebView
2.缺点
以HTML为基础的页面方式,交互相对单一,局限性大
编辑排版HTML页面同样需要花费人力
5>UIWebView加载文件(例如:Bundle文件)
#import "MJViewController.h" @interface MJViewController () @property (nonatomic, strong) UIWebView *webView; @end @implementation MJViewController - (UIWebView *)webView { if (!_webView) { _webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; //webview自动检测手机号码\邮箱等属性 _webView.dataDetectorTypes = UIDataDetectorTypeAll; } return _webView; } - (void)viewDidLoad { [super viewDidLoad]; [self.view addSubview:self.webView]; // HTML是网页的设计语言 // <>表示标记</> // 应用场景:截取网页中的某一部分显示 // 例如:网页的完整内容中包含广告!加载完成页面之后,把广告部分的HTML删除,然后再加载 // 被很多新闻类的应用程序使用 //[self.webView loadHTMLString:@"<p>Hello</p>" baseURL:nil]; // 应用场景:加载从服务器上下载的文件,例如pdf,或者word,图片等等文件 NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"关于.txt" withExtension:nil]; NSURLRequest *request = [NSURLRequest requestWithURL:fileURL]; [self.webView loadRequest:request]; } @end

浙公网安备 33010602011771号