Table of Contents
Swiftで画像を表示するには UIImageView に UIImage を表示させるのが一般的です。しかし、標準の UIImage ではgif画像のアニメーションを再生することができません。
今回は、SwiftGifOrigin というライブラリ(UIImageのExtension)を利用して、UIImage でgif画像のアニメを再生できるようにする方法を紹介します。
SwiftGifOriginのインストール
インストールには Cocoapods を利用するのが簡単です。以下の説明は、Cocoapods が利用できる状態であることを前提とします。
まず、ライブラリを導入したいプロジェクトのルートディレクトリをターミナルでカレントディレクトリとします。
その状態で、以下のコマンドを入力します。
pod init
すると、カレントディレクトリに導入するライブラリを指定するための Podfile が自動作成されます。
このファイルをテキストエディタで開き、以下のように SwiftGifOrigin を導入するための行を書き加えます。
(この例では、ライブラリを導入しようとしているプロジェクト名が「GIFPlayer」であるとします)
# Uncomment this line to define a global platform for your project # platform :ios, '9.0' target 'GIFPlayer' do # Comment this line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! # Pods for GIFPlayer pod 'SwiftGifOrigin', '~> 1.5' end
これを保存し、次のコマンドを入力します。
pod install
これでインストールが始まり、無事に終了するとターミナルの出力は以下のようになります。
終了後は、ライブラリが導入されたプロジェクトファイル(.xcworkspace)が作られますので、こちらを開いてプログラムを修正していきます。
コードサンプル
読み込むファイルの保存場所によって使うメソッドが異なります。また、SwiftGifOriginのメソッドを利用するSwiftファイルでは、import文でライブラリをインポートする必要があります。
ローカルに保存されているgifを読み込む
保存してあるファイルを読み込む場合は gifWithName を使用します。
test.gif を読み込む例を以下に示します。
import UIKit import SwiftGifOrigin class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // ローカルに保存されているgifファイルを指定 let gifImage = UIImage.gifWithName("test") // UIImageView でgifアニメを表示 let imageView = UIImageView(image: gifImage) imageView.center = self.view.center self.view.addSubview(imageView) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
これで、画面中央に用意したgifファイルが表示されます。
URLを指定してインターネット上のgifを読み込む
URLを指定してgif画像を表示するには gifWithURL を使います。
import UIKit import SwiftGifOrigin class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // URLを指定してgifを読み込む let gifImage = UIImage.gifWithURL("http://example.com/test.gif") // UIImageView でgifアニメを表示 let imageView = UIImageView(image: gifImage) imageView.center = self.view.center self.view.addSubview(imageView) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
ネットワーク上のgif画像を読み込む場合は、info.plist に App Transport Security Settings > Allow Arbitrary Loads を追加し、値を YES にしておきます。
これでネットワーク上のリソースにアクセスできるようになります。
以上でローカル・ネット上に関わらずgifアニメをアプリ内で再生することができます。