【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

 

posted @ 2015-04-24 17:50  锟斤拷Dy  阅读(217)  评论(0)    收藏  举报