iOS开发小白学习体验-UIWebView

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值