ios开发之--UIWebView全属性

最近的项目当中需要用到html和ios的交互,所以就凑空整理一下,所有webView相关的方法和属性,如有不对的地方,请大家不吝指教!

代码如下:

1,创建webview并设置代理

UIWebView *webView = [[UIWebView alloc]initWithFrame:self.view.bounds];
    [self.view addSubview:webView];
    webView.delegate = self;

2,加载一个url

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];

3,设置相关的属性

    webView.scalesPageToFit = YES;//自动对页面进行缩放以适应屏幕比例
    webView.dataDetectorTypes = UIDataDetectorTypePhoneNumber;//检测功能    [webView sizeToFit];//记得添加此自适应属性,否则加载会有问题

补充:关于detectsPhoneNumbers方法已废弃,替代方法为:dataDetectorTypes,枚举内容如下:

    typedef NS_OPTIONS(NSUInteger, UIDataDetectorTypes) {
        UIDataDetectorTypePhoneNumber                                        = 1 << 0, // Phone number detection-->检测电话
        UIDataDetectorTypeLink                                               = 1 << 1, // URL detection-->检测网址和邮箱
        UIDataDetectorTypeAddress NS_ENUM_AVAILABLE_IOS(4_0)                 = 1 << 2, // Street address detection-->检测街道地址
        UIDataDetectorTypeCalendarEvent NS_ENUM_AVAILABLE_IOS(4_0)           = 1 << 3, // Event detection-->检测事件
        UIDataDetectorTypeShipmentTrackingNumber NS_ENUM_AVAILABLE_IOS(10_0) = 1 << 4, // Shipment tracking number detection-->货物追踪号码检测
        UIDataDetectorTypeFlightNumber NS_ENUM_AVAILABLE_IOS(10_0)           = 1 << 5, // Flight number detection-->班机号码检测
        UIDataDetectorTypeLookupSuggestion NS_ENUM_AVAILABLE_IOS(10_0)       = 1 << 6, // Information users may want to look up-->用户可能要查找的信息

        UIDataDetectorTypeNone          = 0,               // Disable detection-->禁用检测
        UIDataDetectorTypeAll           = NSUIntegerMax    // Enable all types, including types that may be added later-->检测电话网址和邮箱
    }

4,加载本地文件(我的文件都是直接复制到工程根目录下,add进去的,直接拖进去的,我不用),如图:

a 加载本地pdf文件

    NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"test.pdf" withExtension:nil];
    [webView loadRequest:[NSURLRequest requestWithURL:fileURL]];

b 加载本地word

NSString *path = [[NSBundle mainBundle] pathForResource:@"Test" ofType:@"docx"];

c 加载本地excel文件

    NSString *path = [[NSBundle mainBundle]pathForResource:@"湘潭物业管理项目计划清单" ofType:@"xlsx"];
    NSURL *url = [NSURL fileURLWithPath:path];
    [webView loadRequest:[NSURLRequest requestWithURL:url]];

d 加载本地html文件,文件里面可以写一下aler()和a标签

    NSString *path = [[NSBundle mainBundle]pathForResource:@"video的副本" ofType:@"html"];
    NSURL *url = [NSURL fileURLWithPath:path];
    [webView loadRequest:[NSURLRequest requestWithURL:url]];

如下图:

5 加载html5的代码,以前是在做项目的时候,用来占位用的,在此总结进去,没有什么太大的意义

NSString *title=@"韩寒《后会无期》奇葩的吸金3秘籍";

    NSString *linkStr=[NSString stringWithFormat:@"<a href=‘%@‘>我的博客</a> <a href=‘%@‘>原文</a>",@"http://blog.csdn.net/wildcatlele",@"http://jincuodao.baijia.baidu.com/article/26059"];

    NSString *p1=@"韩寒《后会无期》的吸金能力很让我惊讶!8月12日影片票房已成功冲破6亿大关。而且排片量仍保持10 以上,以日收千万的速度稳步向七亿进军。";

    NSString *p2=@"要知道,《后会无期》不是主流类型片,是一个文艺片。不像《小时代》,是一个商业主流的偶像电影。";

    NSString *image2=[NSString stringWithFormat:@"<img src=‘%@‘  height=‘280‘ width=‘300‘ />",@"http://f.hiphotos.baidu.com/news/w%3D638/sign=78315beeb1fb43161a1f797918a44642/2934349b033b5bb58cb61bdb35d3d539b600bcb5.jpg"];

    NSString *p3=@"太奇葩了!有人说,这是中国电影市场的红利,是粉丝电影的成功。但是,有一部投资3000万的粉丝电影《我就是我》,有明星,制作也不错,基本上是惨败。";

    NSString *p4=@"《后会无期》卖的不是好故事,是优越感。特别是针对80、90后的人群,你有没有发现,看《后会无期》比看《小时代3》有明显的优越感。故事虽然一般,但是很多人看完后,会在微博、微信上晒照片。所以说,对一个族群靠的不是广度,而是深度。<br>        很凶残,值得大家借鉴。韩寒《后会无期》还有什么秘密武器,欢迎《后会无期》团队或相关方爆料,直接留言即可,有料的可以送黎万强亲笔签名的《参与感》一书。";
    //初始化和html字符串
    NSString *htmlURlStr=[NSString stringWithFormat:@"<body style=‘background-color:#EBEBF3‘><h2>%@</h2><p>%@</p> <p>%@ </p> <br><p> %@</p> <p>%@</p>%@<p>%@</p></body>",title,linkStr,p1,p2,p3,image2,p4];
    [webView loadHTMLString:htmlURlStr baseURL:nil];

效果如下:

注:记得在plist文件里面添加https功能:

<key>NSAppTransportSecurity</key>
    <dict>
          <key>NSAllowsArbitraryLoads</key>
          <true/>
    </dict>

6 shouldStartLoadWithRequest代理方法的实现,也就是和js端的交互,代码如下:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];
    NSString *urlStr = [NSString stringWithFormat:@"%@",url];
    NSLog(@"url => %@",urlStr);
    return YES;
}

会在控制台打印出,链接的内容:

这样就可以进行相应的操作了,还有一种混合式开发,可以和后台互传参数的方法,下次可以更新上去(不过混合是开发问题比较多,只做过2个项目,以后就没怎么开发过了);

备注:html文件里面的内容,自己写的,比较乱,仅做参考吧

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <title>hgl的网页</title>

        <style>
            body {
                background-color: antiquewhite;
            }

            h1 {
                background-color: #ff9733;
            }

            p {
                background-color: red;
            }

            #div1 {
                width: 198px;
                height: 66px;
                padding: 10px;
                border: 1px solid #aaaaaa;
            }

            #div2{
                background-color: red;
                width: 80px;
                height: 50px;
                transform: rotate(30deg);
                -moz-transform: rotate(30deg);
                border: solid;
                border-radius: 10px;
                border-color: yellow;
                padding: 10px,5px,5px,5px;
                box-shadow: 10px 10px 5px #B8860B;
            }

            *{
                margin: 0;
                padding: 0;
            }

            #div3{

            }

        </style>

    </head>

    <body>

        <div style="text-align: center">
            <button onclick="playPause()">播放/暂停</button>
            <button onclick="makeBig()">变大</button>
            <button onclick="makeNormal()">正常</button>
            <button onclick="makeSmall()">变小</button>
        </div>

        <video id="video1" width="300" height="200">

            <source src="Video/张韶涵 - 终于.mp4" type="video/mp4">

        </video>

        <article>
            <h1>我是h1标题</h1>
            <p>我是段落我是段落我是段落我是段落我是段落我是段落</p>
        </article>

        <script type="text/javascript">
            var myVideo = document.getElementById("video1")

            function playPause() {

                if(myVideo.pause) {
                    myVideo.play();
                    alert("s");
                } else {
                    myVideo.pause();
                    alert("l");
                }

            }

            function makeBig() {
                myVideo.width = 560;
            }

            function makeNormal() {
                myVideo.width = 300;
            }

            function makeSmall() {
                myVideo.width = 250;
            }
        </script>

        <script>
            function goBack() {
                window.history.back();
            }
        </script>

        <input type="button" value="Back" onclick="goBack()" />

        <img draggable="true" />

        <script type="text/javascript">
            function allowDrop(ev) {
                ev.preventDefault();
            }

            function drag(ev) {
                ev.dataTransfer.setData("Text", ev.target.id);
            }

            function drop(ev) {
                ev.preventDefault();
                var data = ev.dataTransfer.getData("Text");
                ev.target.appendChild(document.getElementById(data));
            }

            //返回上一个界面
            function goBack()
            {
                window.history.back();
            }

            //前往下一个页面
            function goForword()
            {
                window.history.forward();
            }
            function hello(){
                alert("hello");
            }

        </script>

        <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
        <img id="drag1" src="img/sg的副本 2.gif" draggable="true" ondragstart="drag(event)" width="220" height="69" />

        <div id="div2">天气晴朗</div>
        <div id="div3">阳光明媚</div>

        <div id="div4">处处好风光</div>

        <div><a href="http://www.baidu.com">点击跳转</a></div>

        <button type="button" onclick="goBack()">返回</button>
        <button type="button" onclick="goForword()">前往</button>

        <button type="button" onclick="hello()">点击</button>

    </body>

</html>

以上就是webview相关总结,如果有错误的地方,或者更好的思路,希望多多交流!

时间: 2024-10-13 22:51:12

ios开发之--UIWebView全属性的相关文章

文顶顶 iOS开发UI篇—transframe属性(形变)

iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建“基于控件初始位置”的形变 CGAffineTransformMakeTranslation(平移) CGAffineTransformMakeScale(缩放) CGAffineTransformMakeRotation(旋转) (2) 创建“基于transform参数”的形变

iOS开发UI基础—transframe属性(形变)

iOS开发UI基础-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建"基于控件初始位置"的形变 CGAffineTransformMakeTranslation(平移) CGAffineTransformMakeScale(缩放) CGAffineTransformMakeRotation(旋转) (2) 创建"基于trans

李洪强iOS开发Swift篇—09_属性

李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要1个.swift文件 Swift中类的定义格式 1 class 类名 { 2 // ... 属性和方法 3 } 二.属性 1.什么是属性 Swift中的属性(Properties),就类似于其他面向对象语言中的成员变量 2.属性的分类 按照官方文档的说明,属性可以分为以下几种 (1)存储属性(Sto

【iOS开发】UIWebView与JavaScript(JS) 回调交互

引用:http://blog.sina.com.cn/s/blog_693de6100102vi3w.html 很多关于object-c(简称:oc,是ios开发app使用的语言) 与 js 交互的文章都比较适用于 mac开发,iOS的webview 还是有所不一样, 参考:http://blog.sina.com.cn/s/blog_693de6100102vhuh.html 本文提供了一个很好解决 交互的思路. 自然,从oc到js,可以使用 stringByEvaluatingJavaScr

iOS开发UILabel的公共属性及拓展属性

在IOS开发的过程中,UILabel是很常用的一个控件,同时也是大量使用的一个控件.创建一个UILabel一般需要五六句代码,如果我们需要创建几十个UILabel,就意味着我们要写五六十句代码,其实很多代码是重复的,我们可以把类似的代码写到一个公共的方法中,以提高工作效率和降低代码重复.官方提供UILabel的一些属性有很大的局限性,有些在项目中开发中需要用到的一些拓展性的属性,根据个人经验,也顺便一起总结在这里. 一.创建UILabel公共的方法 1.头文件中声明方法如下: ? 1 2 3 4

iOS开发UI篇—transframe属性(形变)

1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两大类 (1) 创建“基于控件初始位置”的形变 CGAffineTransformMakeTranslation(平移) CGAffineTransformMakeScale(缩放) CGAffineTransformMakeRotation(旋转) (2) 创建“基于transform参数”的形变 CGAffineTransformTranslate

iOS开发之---KVC全解

————————————————————————————————————————————————————————————— 一 KVC的基本概念 KVC是Key Value Coding的缩写,意思是键值编码. 在iOS中,提供了一种方法通过使用属性的名称(也就是Key)来间接访问对象属性的方法,这个方法可以不通过getter/setter方法来访问对象的属性. 用KVC可以间接访问对象属性的机制.通常我们使用valueForKey 来替代getter 方法,setValue:forKey来代替

iOS开发,UIWebview与H5之间的交互

导语:随着微信的不断推广,在移动开发的过程中原生与H5的混合开发在移动开发中占据着越来越重要的地位:下面我给大家分享一下我在混合开发中的心得! 将HTML页面加载到UIWebview控件中: A:本地加载: NSString *webPath = [[NSBundlemainBundle]pathForResource:@"HelloWord"ofType:@"html"];//获取文件路径 NSURL *webURL = [NSURLfileURLWithPath

iOS开发 私有变量 私有属性的使用选择

.m文件中可以声明私有成员变量和私有属性 属性(property)一共做了三件事:创建以下划线开头的实例变量.生成getter.setter方法. 成员变量:仅仅创建实例变量: 属性(property)会自动生成setter,getter方法,有的时候就会生成一些无用的方法,造成程序的IPA体积过大. 使用成员变量的方式运行的速度更快. 当开发使用懒加载(变量在需要的时候再去加载)的时候,使用属性(property) - (NSMutableArray *)imagesArr { if (_im