【问题标题】:Swift 3: Load GIF in UIWebViewSwift 3:在 UIWebView 中加载 GIF
【发布时间】:2017-04-06 11:39:19
【问题描述】:

我想在我的 swift 3 应用程序中加载 GIF。我使用此代码执行此操作,但未显示 gif。

let filePath = Bundle.main.path(forResource: “myGif”, ofType: "gif")
let gif = NSData(contentsOfFile: filePath!)
self.webView.load(gif! as Data, mimeType: "image/gif", textEncodingName: String(), baseURL: NSURL() as URL)
self.webView.isUserInteractionEnabled = false

我不知道我的代码有什么问题(我对 swift 和 iOS 开发真的很陌生)。

有什么帮助吗?

【问题讨论】:

  • 与你为什么使用NSData(contentsOfFile:)而不是Data(contentsOf:options:)无关?使用 Swift 类,尤其是当下一行将 Cocoa 类转换为 Swift 类时。
  • @rmaddy 因为我在使用数据时收到此错误:参数标签'(contentsOfFile:)' 不匹配任何可用的重载
  • @Ryan 抱歉,但这不是重复的问题。我用的是swift而不是objective-c
  • @Llg 正确,因为它是 Data(contentsOf:options:),而不是 Data(contentsOfFile:)

标签: ios swift uiwebview gif


【解决方案1】:

我从github找到SwiftGif Lbrary,它不使用webview(如果你想使用webview,请写信给cmets更新答案)

编辑:

网页浏览:

let url = Bundle.main.url(forResource: "source", withExtension: "gif")!
let data = try! Data(contentsOf: url)
webview.load(data, mimeType: "image/gif", textEncodingName: "UTF-8", baseURL: NSURL() as URL)
webview.scalesPageToFit = true
webview.contentMode = UIViewContentMode.scaleAspectFit

希望对你有帮助。

【讨论】:

  • 谢谢,我已经找到了这个 repo,但我使用的是 swift 3 和 ios 8+。可以给我webview版本吗?
  • @Llg 适用于 swift 3 我刚刚在 xcode 8 中测试过(但我会用 webview 更新它)
  • @Llg Ryan 首先回答了你的问题,测试他的代码是否正常工作。
  • 是的,谢谢!您能在 Ryan 的回答中看到我的评论吗?
  • 我没有测试它,因为我没有大 gif,但尝试从情节提要更改,选择 web 视图,然后从右侧菜单中更改内容模式以适应宽高比
【解决方案2】:

这是工作示例。我从网上下载了 gif 图像并将其添加到示例项目中。

let url = Bundle.main.url(forResource: "hsk", withExtension: "gif")!
let data = try! Data(contentsOf: url)
webView.load(data, mimeType: "image/gif", textEncodingName: "UTF-8", baseURL: NSURL() as URL)

使用上面的代码,我可以看到下面的动画 gif。

【讨论】:

  • 感谢它的工作!如果 webview 大小小于 gif 怎么办?换句话说,我想放入一个小的 webview,但我想显示 gif 的所有内容(我不想滚动查看 gif 的隐藏部分)
  • 有一种方法可以检查 webView 的 contentSize,也许你可以写一个 html/css 来缩小 gif 的大小。如果您使用 webView 只是为了显示动画 gif,您可以使用 UIImageView 获取数据并对其进行动画处理,或者您可以使用 3rd 方库,如 Gifu
  • 谢谢瑞恩。最后一个问题:如何让 gif 始终播放?我的 gif 在一段时间后停止动画
  • 不确定只要你使用UIWebView。如果你使用UIImageView,你可以重复运行动画,也可以随时停止。
  • 我可以在 GIF 中使用UIImageView 吗?我是的,你能举个例子吗?
猜你喜欢
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多