iOS开发小白学习体验-UIWebView

来源:互联网 发布:数据库内模式是什么 编辑:程序博客网 时间:2024/05/20 17:06

UIWebView

创建UIWebView

UIWebView *web = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

加载到屏幕上

[self.view addSubview:web];

属性设置

    web.scalesPageToFit = YES;/**< 自动对页面进行缩放以适应屏幕 */    web.detectsPhoneNumbers = YES;/**< 自动检测网页上的电话号码,单击可以拨打,已废弃 */    web.request;/**< 网络请求,只读,在iOS9中需要配置info.plist才能请求http网络*/    web.canGoBack;/**< 是否可以返回,只读 */    web.canGoForward;/**< 是否可以向前,只读 */    web.loading;/**< 是否在加载,只读 */

加载网络内容

    NSURL* url = [NSURL URLWithString:@"http://www.youku.com"];/**< 创建URL */    NSURLRequest* request = [NSURLRequest requestWithURL:url];/**< 创建NSURLRequest */    [web loadRequest:request];/**< 加载 */

加载本地路径

    NSURL* url = [NSURL   fileURLWithPath:filePath];/**< 创建URL */       NSURLRequest* request = [NSURLRequest requestWithURL:url];/**< 创建NSURLRequest */    [webView loadRequest:request];/**< 加载 */

UIWebView 还支持将一个NSString对象作为源来加载。你可以为其提供一个基础URL,来指导UIWebView对象如何跟随链接和加载远程资源:

    [webView loadHTMLString:myHTML baseURL:[NSURL URLWithString:@"http://baidu.com"]]; 

UIWebView类内部会管理浏览器的导航动作,通过goForward和goBack方法你可以控制前进与后退动作

    [webView goBack];      [webView goForward];      [webView reload];//重载       [webView stopLoading];//取消载入内容 

代理方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{    // 当网页视图被指示载入内容而得到通知。应当返回YES,这样会进行加载。通过导航类型参数可以得到请求发起的原因,可以是以下任意值    /**     UIWebViewNavigationTypeLinkClicked     UIWebViewNavigationTypeFormSubmitted     UIWebViewNavigationTypeBackForward     UIWebViewNavigationTypeReload     UIWebViewNavigationTypeFormResubmitted     UIWebViewNavigationTypeOther     */    return YES;}- (void)webViewDidStartLoad:(UIWebView *)webView{    // 网页开始加载的时候调用}- (void)webViewDidFinishLoad:(UIWebView *)webView{    // 网页结束加载的时候调用}- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error{    // 因为某个错误导致网络加载失败的时候调用}

由于iOS9对网络请求的安全性有了更深层的保护,所以以前http的网络请求想要使用需要修改plist文件。详情请见@程序犭袁的GitHub iOS9网络适配
方法一:

方法一:info.plist 添加以下代码    <key>NSAppTransportSecurity</key>    <dict>        <key>NSExceptionDomains</key>        <dict>            <key>www.weather.com.cn</key>            <dict>                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>                <true/>                <key>NSIncludesSubdomains</key>                <true/>                <key>NSTemporaryExceptionMinimumTLSVersion</key>                <string>TLSv1.1</string>            </dict>        </dict>    </dict>    NSExceptionDomains:里面放的是允许使用http请求的sever字典。  www.weather.com.cn:允许使用http请求的sever的名字,里面放的是对这个sever的一切配置。(替换成自己项目的sever的就好)  NSIncludesSubdomains:是否允许子域名。  NSTemporaryExceptionAllowsInsecureHTTPLoads:是否允许进行http请求

方法二:

方法二:info.plist 添加以下代码<key>NSAppTransportSecurity</key>  <dict>  <key>NSAllowsArbitraryLoads</key>  <true/></dict>NSAllowsArbitraryLoads:允许任意请求加载。(彻底回到之前的方式)

截止到目前,官方文档只是说需要配置Info.plist。但是貌似并没有提及到如何去进行配置。顺便上个图。

  这段话的意思总结一下就三点。

  不管是建立新项目还是更新旧项目,赶紧给我换这种安全的方式。

  如果你尝试不这么做,那么我就给你报错。

  如果你真的不想这么做,那么去Info.plist里面去指定那个不安全的server。

  就手机端而言,第一种方式相比第二种方式更加合理。第二种方式虽然简单粗暴。但是很简单。如果想偷懒,那自然是使用第二种方式啦。

0 0