文档章节

如何显示gif格式图片

grath
 grath
发布于 2015/09/25 15:26
字数 671
阅读 127
收藏 0

GIF格式图片显示

在iOS开发中 要想显示gif图片呢 大致总结了如下几个方法:

  • 直接使用第三方库来完成这个任务
  • 使用UIWebView来加载gif图片
  • QuikLook模块同样可以预览gif

很多第三方库都是使用ImageIO模块在读取gif文件,并提取出gif里面所包含的所有图片序列和播放时间。这个需要不少的工作量,当然也是写一次,然后泽富千秋万代哈。
QuikLook模块很少涉及到,它不但可以显示gif,甚至PDF、work办公文档都是可以预览的。
在iOS8之后增加了UIWebView模块以备来替代UIWebView,但是WKWebView并不能加载本地html文件(可以绕过)。所有这次仍然使用UIWebView来显示。
WKWebView并不能加载本地html文件,基本上大家采取的做法都是讲html文件读取出来然后以String的形式加载到WKWebView当中去,但是这样的话,html文件中引用的本地资源同样没发加载,没戏。

以下是可运行的代码部分:

居然识别不了!!!!!!!!!!!!!!!!!!

import UIKit import QuickLook import WebKit class ViewController: UIViewController, QLPreviewControllerDataSource

`

override func viewDidLoad() {
    super.viewDidLoad()
    let btn = UIButton(frame: CGRectInset(view.bounds, 100, 300) )
    btn.backgroundColor = UIColor.grayColor()
    btn.addTarget(self, action: "clickBtn:", forControlEvents: .TouchUpInside)
    view.addSubview(btn)
}

func clickBtn(sender: UIButton!) {
    /*********
    *以下是三种方法来加载
    *
    ***********/
    addByQL()
    addByOldweb()
    addByQL()
}

//通过之前老的接口加载gif
func addByOldweb() {
    let webVw = UIWebView(frame: CGRectInset(view.bounds, 0, 160))
    let path =  NSBundle.mainBundle().pathForResource("home.html", ofType: nil)
    let url = NSURL(string: path!)
    let request = NSURLRequest(URL: url!)
    
    webVw.loadRequest(request)
    view.addSubview(webVw)
}

//通过最新的WebKit模块加载 在iOS8加入的
func addByWeb() {
    
    let preferences = WKPreferences()
    preferences.javaScriptEnabled = false
    
    let configuration = WKWebViewConfiguration()
    configuration.preferences = preferences
    
    let webView = WKWebView(frame: CGRectInset(view.bounds, 0, 160), configuration: configuration)
    
    //
    let path =  NSBundle.mainBundle().pathForResource("home.html", ofType: nil)
    
    let contents: String?
    do {
        contents = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
    } catch _ {
        contents = nil
    }
    //打印home.html
    print("the content \(contents!)")
    
    //创建URL
    let httpurl = NSURL(string: "http://www.apple.com")
    
    let urlRequest = NSURLRequest(URL: httpurl!)
    
    //新的WKWebView不知道为何无法加载本地的html文件 所以可以讲本地html文件读取出来 以便加载String来绕过bug
    //但是问题仍然存在 String里面相关的img没有成功载入
    webView.loadHTMLString(contents!, baseURL: nil)
    
    //通过url载入
    webView.loadRequest(urlRequest)
    
    webView.layer.borderWidth = 2.0
    webView.layer.borderColor = UIColor.purpleColor().CGColor
    view.addSubview(webView)
}



//QuikLook模块
func addByQL() {
    let previewVc = QLPreviewController()
    previewVc.dataSource = self
    previewVc.currentPreviewItemIndex  = 0
    addChildViewController(previewVc)
    view.addSubview(previewVc.view)

}

//QLPreviewControllerDataSource
func numberOfPreviewItemsInPreviewController(controller: QLPreviewController) -> Int {
    return 1
}
func previewController(controller: QLPreviewController, previewItemAtIndex index: Int) -> QLPreviewItem {
    
    //这里支持很多的文档格式 具体可查相关api
    let path = NSBundle.mainBundle().pathForResource("move.gif", ofType: nil)
    let fileurl = NSURL(fileURLWithPath: path!)
    return fileurl
}

`

需要注意的是这是swift2标准的 其中使用do-try-catch,不明白的可以寻找相关说明。 另外QLPreviewControllerDataSource也ok。

© 著作权归作者所有

grath

grath

粉丝 46
博文 12
码字总数 3996
作品 0
成都
程序员
私信 提问
GIF,JPG还是PNG选择合适的图片格式

转自:IT屌丝,码农之家 从某种程度上说,判断一个网页设计师是否优秀,可以从其在WEB开发(或网页设计)中是否合理的采用各种图片格式得出结论。事实上,或许所有人都知道图片存在GIF,JPG和...

it_hack
2013/04/16
324
0
在Windows Phone中如何显示GIF图片

话说前几天我一个朋友跟我谈到一个特别的需求,想从Web上下载GIF图片过来然后在Windows phone 上显示。我们都知道Silverlight与Windows Phone都是不支持GIF图像格式的。如果你尝试去下载gif...

曾沙
2012/11/27
428
0
在Windows Phone中如何显示GIF图片

话说前几天我一个朋友跟我谈到一个特别的需求,想从Web上下载GIF图片过来然后在Windows phone 上显示。我们都知道Silverlight与Windows Phone都是不支持GIF图像格式的。如果你尝试去下载gif...

junwong
2012/08/16
4.1K
4
如何让你的 Android 显示gif格式的图片

这里,首先要说明的是,希望那些已经实现了gif格式图片显示的朋友不要喷我,我知道你们是怎么做的,无非两种:一种是用原本就已经存在的gif解码jar包,另外一种是使用google提供的开源的gif...

鉴客
2011/10/20
23.6K
6
GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理

 GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图);  GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了大一统的地位...

凡尘里的一根葱
2015/10/01
757
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins World 贡献者峰会及专家答疑展位

本文首发于:Jenkins 中文社区 原文链接 作者:Marky Jackson 译者:shunw Jenkins World 贡献者峰会及专家答疑展位 本文为 Jenkins World 贡献者峰会活动期间的记录 Jenkins 15周岁啦!Jen...

Jenkins中文社区
18分钟前
6
0
杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。 然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为...

liululee
33分钟前
6
0
OSChina 周二乱弹 —— 我等饭呢,你是不是来错食堂了?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 自行车丢了:给主编推荐首歌 《クリスマスの夜》- 岡村孝子 手机党少年们想听歌,请使劲儿戳(这里) @烽火燎原 :国庆快来,我需要长假! ...

小小编辑
59分钟前
324
8
玩转 Springboot 2 之热部署(DevTools)

Devtools 介绍 SpringBoot 提供了热部署的功能,那啥是热部署累?SpringBoot官方是这样说的:只要类路径上的文件发生更改,就会自动重新启动应用程序。在IDE中工作时,这可能是一个有用的功能...

桌前明月
今天
5
0
CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部