Swiftでgifアニメを再生できるアプリを作る(SwiftGifOriginの使い方)

2016年9月15日(更新: 2016年9月17日)

Swiftで画像を表示するには UIImageViewUIImage を表示させるのが一般的です。しかし、標準の UIImage ではgif画像のアニメーションを再生することができません。

今回は、SwiftGifOrigin というライブラリ(UIImageのExtension)を利用して、UIImage でgif画像のアニメを再生できるようにする方法を紹介します。

SwiftGifOriginのインストール

インストールには Cocoapods を利用するのが簡単です。以下の説明は、Cocoapods が利用できる状態であることを前提とします。

まず、ライブラリを導入したいプロジェクトのルートディレクトリをターミナルでカレントディレクトリとします。

その状態で、以下のコマンドを入力します。

pod init

すると、カレントディレクトリに導入するライブラリを指定するための Podfile が自動作成されます。

自動作成された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

これでインストールが始まり、無事に終了するとターミナルの出力は以下のようになります。

cocoapodsでインストール完了

終了後は、ライブラリが導入されたプロジェクトファイル(.xcworkspace)が作られますので、こちらを開いてプログラムを修正していきます。

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 にしておきます。

これでネットワーク上のリソースにアクセスできるようになります。

App Transport Security Settings の追加

以上でローカル・ネット上に関わらずgifアニメをアプリ内で再生することができます。

コメントを残す

メールアドレスが公開されることはありません。