UIWebView是ios内置的浏览器控件,可以用来直接加载远程的网页资源,也可以加载绝大部分的常见文件htm/html、txt、pdf/keynote、ppt、doc/docx、音视频文件等等,还可以通过调用UIWebView提供的api实现页面的前进、后退、刷新等动作,甚至还可以动态的设置网页内容。
/** [UIScreen mainScreen].bounds.size.width 硬件屏幕的宽 [UIScreen mainScreen].bounds.size.height硬件屏幕的高 **/ //1.创建一个UIWebView UIWebView *web = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; //2.要打开的网址 NSString *openURL = @"https://www.baidu.com/"; NSURL *URL = [NSURL URLWithString:openURL]; NSURLRequest *requestURL = [NSURLRequest requestWithURL:URL]; //3。加载内容 [web loadRequest:requestURL]; [self.view addSubview:web];
模拟机运行效果图:
/** UIWebView类内部会管理浏览器的导航动作,可以通过一下函数控制 [web goBack];//根据历史返回上一页 [web goForward];//根据历史前往下一页 [web reload];//重新加载 [web stopLoading];//停止加载 **/ //4.在导航栏添加一个按钮,这个按钮能返回上一页 UIBarButtonItem *goBack = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(goBack)]; self.navigationItem.rightBarButtonItem = goBack;
-(void) goBack { [web goBack]; }
运行效果图:
释放UIWebView对象之前首先要将其delegate设置为nil,否则可能会出现异常crash等问题,一般在dealloc方法中处理;
UIWebView对象不应该被添加到UIScrollView对像的视图上,否则可能会出现无法预料的问题,因为系统无法正确处理两个视图的点击、滚动、手势操作等事件;
加载本地html文件时,确保使用loadHTMLString:baseURL:方法,不要使用loadRequest:方法;
UIWebView的stringByEvaluatingJavaScriptFromString:方法为同步执行,当前线程将等待该方法执行完成,因此调用该方法将会导致app出现挂起现象;