• ios学习之UIWebView网页视图


    转载于爱德凡的百度空间,地址:http://hi.baidu.com/aidfan/item/34a720866b33cbcdef083d37

    UIWebView 使用详解

    一.UIWebView加载的时候通常有几种方法

    1.loadRequest:

    2.loadHTMLString:string  baseURL:

    3.loadData:MIMEType:textEncodingName:baseURL:

    其中baseURL 是指基准的url 是一个绝对的地址,程序要用到的其他资源就可以根据这个基准地址进行查找而不用再次定位到绝对地址;

    二.UIWebView中几个重要的函数

    1.- (void )webViewDidStartLoad:(UIWebView  *)webView   网页开始加载的时候调用

    2.- (void )webViewDidFinishLoad:(UIWebView  *)webView  网页加载完成的时候调用

    3.-(BOOL )webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType )navigationType

    当程序以UIWebView加载方式1进行加载的时候就会调用到此函数,然后执行webViewDidStartLoad函数,所以我们可以在此函数中进行一些请求解析,URL地址分析的工作。

    4.- (void)webView:(UIWebView *)webView  didFailLoadWithError:(NSError *)error

    是一个可选的函数,如果页面加载失败可以根据不同的错误类型反馈给用户不同的信息

    三.代码实现

    1.在.h文件中加载声明UIWebviewDelegate协议

    声明WebView

    2.实现UIWebView

    WebView  = [[ UIWebView   alloc]  initWithFrame: CGRectMake(x,x,x,x )];

    [ WebView   setUserInteractionEnabled: YES ];  //是否支持交互

    [ WebView   setDelegate: self ];  //委托

    [ WebView   setOpaque: NO ];  //透明

    [ self . view  addSubview : WebView];  //加载到自己的view

    url = [[ NSURL alloc ] initWithString :@"http:"];

    [ WebView loadRequest:[ NSURLRequest requestWithURL: url ]];  //笔者习惯采用loadRequest方式,你可以采用其他方式

    opaqueview = [[ UIView   alloc]  initWithFrame: CGRectMake(x ,  x ,  x ,  x )];        //opaqueview 需要在.h文件中进行声明 用以做UIActivityIndicatorView的容器view;

    activityIndicator  = [[ UIActivityIndicatorView   alloc]  initWithFrame: CGRectMake( x ,  x ,  x ,  x )];//需要在.h文件中进行声明

    [ activityIndicator  setCenter :  opaqueview. center ];

    [ activityIndicator   setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite];  //颜色根据不同的界面自己调整

    [ opaqueview  setBackgroundColor:[ UIColor   blackColor]];

    [ opaqueview  setAlpha: 0.6 ];

    [ self . view  addSubview :  opaqueview];

    [ opaqueview  addSubview : activityIndicator];

    接下来添加

    - (void )webViewDidFinishLoad:(UIWebView *)webView {

    [activityIndicator stopAnimating];

    opaqueview.hidden  = YES ;

    }

    - (void )webViewDidStartLoad:(UIWebView *)webView {     

    [ activityIndicator startAnimating ]; 

    opaqueview.hidden  = NO ;

    }

    这样就简单的实现了UIWebView控件的加载使用,不同的页面均有加载的等待。

     

    //.h文件
    @interface ViewController : UIViewController<UIWebViewDelegate>{
        IBOutlet UIWebView *webView;
        UIActivityIndicatorView *activityIndicatorView;
        UIView *opaqueview;
    }
    
    //.m文件
    - (void)viewDidLoad
    {
        [superviewDidLoad];
    webView = [[UIWebViewalloc] initWithFrame:CGRectMake(0, 44, 320, 440 )];
        [webViewsetUserInteractionEnabled:YES];             //是否支持交互
        [webView setDelegate:self];                          //委托
        [webView setOpaque:NO];                              //Opaque为不透明的意思,这里为透明
        [webView setScalesPageToFit:YES];                    //自动缩放以适应屏幕
        [self.view addSubview:webView];             
    
    //加载网页的方式
        //1.创建并加载远程网页
        NSURL* url = [NSURLURLWithString:@"http://www.baidu.com"];
        [webViewloadRequest:[NSURLRequestrequestWithURL:url]];  
        //2.加载本地文件资源
    //    NSURL *url = [NSURL fileURLWithPath:filePath];  //filePath为文件路径
    //    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    //    [webView loadRequest:request];
    
        //3.读入一个 HTML,直接写入一个HTML代码
    //    NSString *htmlPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"webapp/loader.html"];//相当于文件地址
    //    NSString *htmlString = [NSString stringWithContentsOfFile: htmlPath encoding:NSUTF8StringEncoding error:NULL];
    //    [webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:htmlPath]];
     opaqueview = [[UIViewalloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; //opaqueview 需要在.h文件中进行声明用以做UIActivityIndicatorView的容器view;
    
        activityIndicatorView = [[UIActivityIndicatorViewalloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
        [activityIndicatorView setCenter:opaqueview.center];
    
        [ activityIndicatorView   setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite];  //颜色根据不同的界面自己调整   
        [ opaqueview  setBackgroundColor:[ UIColor   blackColor]];  
        [ opaqueview  setAlpha: 0.6 ];
        [ self . view  addSubview :  opaqueview];    
        [ opaqueview  addSubview : activityIndicatorView];
    }
    
    //当网页视图已经开始加载一个请求之后得到通知
    
    - (void) webViewDidStartLoad:(UIWebView  *)webView {
        [activityIndicatorViewstartAnimating];
        opaqueview.hidden = NO;
    }
    
    //当网页视图结束加载一个请求之后得到通知
    
    - (void) webViewDidFinishLoad:(UIWebView *)webView{
        [activityIndicatorViewstopAnimating]; //停止风火轮
        opaqueview.hidden = YES; //隐藏
    }
    花开花谢春不管,水暖水寒鱼自知.
  • 相关阅读:
    mitmproxy抓包工具
    java基础|int和Integer的区别
    Vue|退出功能
    Vue|分页处理
    apt-get本地软件源搭建
    rqt_plot报错
    创建ROS 工作空间时出现:程序“catkin_init_workspace”尚未安装,程序“catkin_make”尚未安装。
    ubuntu16.04安装ROS
    debian及Ubuntu各版本下载地址获取
    解决sudo rosdep init和rosdep update的错误
  • 原文地址:https://www.cnblogs.com/taintain1984/p/3396881.html
Copyright © 2020-2023  润新知