[TwistedFate]UIWebView的简单使用

本文介绍了UIWebView的基本概念及其在iOS开发中的应用。详细讲解了UIWebView的加载方式,并提供了使用NSURLRequest加载网页及通过HTML字符串加载内容的具体实例。此外,还探讨了如何通过代理方法控制UIWebView的加载行为和完成加载后的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UIWebView

UIWebView就是一个可以帮我们打开网站的浏览器界面,我们对这个页面操作就相当于浏览器操作

UIWebView使用的三种情况

  1. 整个几面的排版比较复杂,需要很多判断
  2. 整个界面整体布局改变非常大
  3. 需要访问某个网站的时候

UIwebView的加载方式

  1. 利用requset加载
//  初始化一个NSURLRequset对象
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://pianke.me/webview/539e50698ead0ef96e0000a3"]];

// 初始化一个webView
    _webView = [[UIWebView alloc] initWithFrame:self.view.bounds];

//  利用request加载
[_webView loadRequest:request];

[self.view addSubview:_webView];
  1. 利用一个HTMLString加载
//  把网址转化成一个NSData
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://pianke.me/webview/539e50698ead0ef96e0000a3"]];

 //  把网站内容的二进制转化成为一个字符串
    NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

//  html语句中有head标签 可以通过这段代码来改变图片宽度    
string = [NSString stringWithFormat:@"<head><style>img{width:300px !important;}</style></head>%@",string];

//  替换html语句中的字段
string = [string stringByReplacingOccurrencesOfString:@"黑啤" withString:@"Agent Mahong"];

//  UIWebView第二种加载方式
[_webView loadHTMLString:string baseURL:nil];

 // 设置代理
    _webView.delegate = self;
    [self.view addSubview:_webView];

UIWebView常用代理方法实现

这个代理方法控制了我们的UIWebView是否能够加载,返回YES代表可以加载,返回NO代表不能架子啊 (UIWebView每次加载一个新的界面的时候都会执行这个方法)

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

    //  从NSURLRequset获取url
    NSURL *url = request.URL;

    //  从NSURL里面获取字符串
    NSString *str = url.absoluteString;
//    NSLog(@"%@",str);

    //  根据字符串来判断是否加载这个请求
    if ([str isEqualToString:kFirstAPI]) {

        return YES;

    }

    //  通过字符串参数获取到一个SEL类型的对象(SEL表示一个方法)
    SEL sss = NSSelectorFromString(@"viewDidLoad");

    //  让self去执行这个方法
    [self performSelector:sss withObject:nil afterDelay:0];

    return NO;

}

webView每次加载完毕之后就会执行这个代理方法

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

    //  使用WebView去执行一段JS脚本的代码,通过代码我们可以返回一个字符串
    //  获取webView高度
    CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"] floatValue];

    NSLog(@"%f",height);

    webView.frame = CGRectMake(0, 0, 375, height);
    [webView sizeToFit];

    CGRect frame = webView.frame;

    NSLog(@"%f",frame.size.height);

}

在webView加载出来的界面添加控件

- (void)webViewDidFinishLoad:(UIWebView *)webView{
//  获取webView高度
    _webViewHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue];
        webView.scrollView.contentSize = CGSizeMake(kScreenWidth, _webViewHeight + 40);

//  在webView.scrollView上添加控件
.......

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值