精华内容
下载资源
问答
  • UIWebView
    2018-11-07 21:28:00

    1、简介

    • UIWebView 控件是做网络应用开发时使用的最多的一个控件,它实现了内置的浏览器(类似于 Safari),并且 UIWebView 继承自 UIView,可以将其像其它控件一样应用到需要的位置。
    • 优点:简单,快速。
    • 缺点:内存消耗大,对于手机端的硬件支持不够好,例如:定位,捏合(传统互联网只有点击动作)。
    • 应用场景:
      • 适合于内容版式变化比较大的应用。
        • 网易新闻,各种图文混排,甚至嵌入视频。
        • 菜谱,各种图片搭配,图文并茂。
        • 运动类的应用:羽毛球,后场高远球,来一段视频,图解说明,分解动作...。
      • 有些公司,有网站,没有 iOS 应用,着急上架,可以先用 webView 快速包装一个。
        • 百度的一系列应用,去年年初才慢慢的转成 iOS 应用。
      • iPhone 手机的浏览器 Safari 就是用 UIWebView 控件开发的。
        • 微信内嵌的浏览器就是 UIWebView 控件
    • iOS 9+ 中若要加载 http: 网络,需要在 Info.plist 中添加 App Transport Security Settings -> key: Allow Arbitrary Loads,value: YES。

    2、UIWebView 的创建

    
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, self.view.bounds.size.width, self.view.bounds.size.height-20)];
    
    // 将 webView 添加到屏幕
    [self.view addSubview:webView];
    
    // 加载网络地址
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
    
    // 适配屏幕
    webView.scalesPageToFit = YES;

    3、UIWebView 的设置

    // 加载指定 URL 所设定的内容
    /*
    异步加载,可以从服务器和本地读取
    */
    
    // 加载网络数据
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
    
    // 加载本地文件
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Baidu" 
                                                                                                 ofType:@"pdf"]]]];
    
    // 加载 HTML 字符串数据
    /*
    指定 baseURL 可加载图片
    */
    
    // 加载网络 HTML 字符串数据
    NSString *htmlString1 = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://m.baidu.com/"] 
                                         encoding:NSUTF8StringEncoding 
                                            error:NULL];
    [webView loadHTMLString:htmlString1 baseURL:[NSURL URLWithString:@"https://m.baidu.com/"]];
    
    // 加载本地 HTML 字符串数据
    NSString *htmlString2 = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Baidu" ofType:@"html"] 
                                          encoding:NSUTF8StringEncoding 
                                             error:NULL];
    [webView loadHTMLString:htmlString2 baseURL:nil];
    
    // 加载 Data 数据
    /*
    比 loadHTMLString 更底层
    */
    NSData *data = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Baidu" ofType:@"html"]]];
    [webView loadData:data MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:[NSURL URLWithString:@"https://m.baidu.com/"]];
    
    // 适配屏幕
    /*
    YES 页面可以通过放大和缩小去适应,用户也可以通过手势来放大和缩小
    */
    webView.scalesPageToFit = YES;
    
    // 设置自动分页模式
    /*
    UIWebPaginationModeUnpaginated,   // 默认不分页
    UIWebPaginationModeLeftToRight,
    UIWebPaginationModeTopToBottom,
    UIWebPaginationModeBottomToTop,
    UIWebPaginationModeRightToLeft
    */
    webView.paginationMode = UIWebPaginationModeLeftToRight;
    
    // 设置超链接类型
    /*
    UIDataDetectorTypePhoneNumber     = 1 << 0,          // Phone number detection
    UIDataDetectorTypeLink            = 1 << 1,          // URL detection
    UIDataDetectorTypeAddress         = 1 << 2,          // Street address detection
    UIDataDetectorTypeCalendarEvent   = 1 << 3,          // Event detection
    
    UIDataDetectorTypeNone            = 0,               // No detection at all
    UIDataDetectorTypeAll             = NSUIntegerMax    // All types
    */
    webView.dataDetectorTypes = UIDataDetectorTypeAll;
    
    // 设置是否用内嵌 HTML5 播放视频
    /*
    内嵌播放 HTML 中的 video 元素必须包含 webkit-playsinline 属性
    YES 内嵌播放,NO 本地全屏控制,iPhone Safari defaults to NO. iPad Safari defaults to YES
    */
    webView.allowsInlineMediaPlayback = NO;
    
    // 设置是否需要用户触发来启动媒体播放
    /*
    iPhone and iPad Safari both default to YES
    */
    webView.mediaPlaybackRequiresUserAction = NO;
    
    // 设置本页面是否可以 AirPlay 播放
    /*
    iPhone and iPad Safari both default to YES
    */
    webView.mediaPlaybackAllowsAirPlay = YES;
    
    // 设置是否把网页内容全部加载到内存中再去渲染
    /*
    iPhone and iPad Safari both default to NO
    */
    webView.suppressesIncrementalRendering = NO;
    
    // 设置是否需要用户触发显示键盘
    /*
    default is YES
    */
    webView.keyboardDisplayRequiresUserAction = NO;
    
    // 刷新
    /*
    重新加载页面
    */
    [webView reload];
    
    // 停止加载
    /*
    加载过程中,强行停止加载
    */
    [webView stopLoading]; 
    
    // 返回至上一个链接
    /*
    在产生多个链接浏览时,可以返回至浏览历史的上一个链接
    */
    [webView goBack];
    
    // 前进至下一个链接
    /*
    在产生多个链接浏览时,可以前进至浏览历史的下一个链接
    */
    [webView goForward];
    
    // 设置代理,需遵守协议 <UIWebViewDelegate>
    webView.delegate = self;

    4、UIWebView 的协议方法

    • 需遵守协议 UIWebViewDelegate,并设置代理
    // 将要开始加载网页
    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    
        return YES;
    }
    
    // 开始加载网页
    - (void)webViewDidStartLoad:(UIWebView *)webView {
    
    }
    
    // 加载网页完成
    - (void)webViewDidFinishLoad:(UIWebView *)webView {
    
    }
    
    // 加载网页失败
    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    
    }
    

    转载于:https://www.cnblogs.com/CH520/p/9413464.html

    更多相关内容
  • IOS开发中因为引入cocos2dx,导致代码审核不通过无法提交( Apple will stop accepting submissions of apps that use UIWebView APIs )。该问题的解决方案有两种:1)升级Cocos2dx的版本,在查看Cocoas官网及Cocoas...
  • ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Unity IOS审核被拒,解决办法,去网上看了好多帖子,...
  • UIWebview中提供的缓存策略 NSURLRequestUseProtocolCachePolicy 缓存策略定义在 web 协议实现中,用于请求特定的URL。是默认的URL缓存策略。 NSURLRequestReloadIgnoringLocalCacheData 从服务端获取数据,忽略...
  • ios UIWebView使用

    2018-11-07 16:27:53
    ios的UIWebView详解,定义、实现delegate、webView和js的交互、原生调用js、js调用原生
  • UIWebView原生与H5交互

    2018-10-30 15:43:29
    UIWebView原生与H5交互,pre;confirm;等包含三个H5页面跳转的交互demo
  • 本篇文章主要介绍了浅谈iOS UIWebView对H5的缓存功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 一款UIWebView的加载进度条,基于CAShapeLayer,有两种显示风格:纯颜色显示和渐变色显示
  • 在日版iPhone5,10.3.3 系统上,有一些遗留问题,先不管了 ...在UIWebView时代,UIWebView的delegate没有处理双向认证的方法,需要在shouldStartLoadWithRequest方法中将请求拦截使用NSURLConnectio
  • 如果是网页内容里面的alert,我们可以等网页加载完毕,也就是在webViewDidFinishLoad中执行下面的js代码,就可以屏蔽alert了 [myWebView stringByEvaluatingJavaScriptFromString:@...- (void)webView:(UIWebView *)s
  • UIWebView 是用来加载加载网页数据的一个框,接下来通过本文给大家介绍IOS中使用UIWebView 加载网页、文件、 html的方法,对本文详情感兴趣的朋友一起学习吧
  • safari浏览器就是通过UIWebView做的。 服务器将MIME的标识符等放入传送的数据中告诉浏览器使用那种插件读取相关文件。 uiwebview加载各种本地文件(通过loadData方法): UIWebView加载内容的三种方式: 1 加载...
  • 主要介绍了IOS中UIWebView的使用详解,涉及到初始化与三种加载方式,一些常用的属性和变量及ios7中的一些新特征,本文介绍的非常详细,感兴趣的朋友一起学习吧
  • iOS UIWebView URL拦截.pdf

    2021-09-15 09:47:13
    iOS UIWebView URL拦截.pdf
  • UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图: 我们创建一个Window-based Application程序命名为...
  • 在Android开发中有WebView作为混合模式开发的桥梁,当然在IOS中也同样有一个 UIWebView 组件来作为混合模式开发的桥梁,那么下面就对UIWebView的一些基本知识详解一下
  • (OC)(UIWebView)新闻详情
  • 主要为大家详细介绍了iOS之UIWebView无法获取web标题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • iTunesConnect吃包 因为ipa包中包含uiwebview 5月1号以后iTunesConnect不允许上传的ipa包中屌用UIWebView,使用过后上传的ipa包都不会显示在活动里(我称呼这种骚操作为‘吃包’)。 已经把项目工程里面的有关...
  • UIWebView加载html

    2019-04-12 01:43:47
    NULL 博文链接:https://wenxin2009.iteye.com/blog/1708733
  • 基于NSURLSession NSURLProtol的UIWebView离线缓存 主要是使用苹果的黑魔法类:NSURLProtocol来对网络请求进行拦截,拦截后使用自定义的网络去加载数据后进行离线缓存。这样保证在没有网络的情况下,也能保证离线能...
  • UIWebView的使用代码

    2015-12-15 08:54:12
    之前提到UIWebView使用一个UIScrollView对象来关联web页面的内容,通过UIWebView的scrollView属性即可获得该对象,默认情况下网页长度超出设备视口长度后页面会滚动,用户使用手指滚动页面到页面边距并放开手指后...
  • ios-完美的UIWebView.zip

    2019-07-11 18:36:14
    完美的webView,不懂UIwebView的可以看看
  • 根据加载的html内容,自适应高度
  • 两步实现iOS UIWebView 通过 cookie 完成自动登录。
  • UIWebViewDemo

    2015-05-05 13:29:31
    UIWebVeiw的使用,功能包括“返回上页”“在safari打开”“网页刷新”
  • 网页视图 UIWebView

    2015-08-20 22:45:12
    网页视图的基本使用,网络资源地址字符串的处理,UIWebView属性与协议的综合使用;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,751
精华内容 8,700
关键字:

uiwebview