iOSアプリでGIFアニメーションを再生してみたところ、PCのブラウザ上でのループ再生回数と異なるケースがあることがわかりました。PCのブラウザ上で動作するWebアプリケーションと同等のGIFループ再生機能を提供したかったので、なぜループ再生回数が違うのか調査し、その違いを吸収することを試みました。
具体的な事象としては、ブラウザで表示すると1回アニメーションするGIFのループ回数が、kCGImagePropertyGIFLoopCount を使ってGIFファイル中のループ回数を取得すると0が返ってきていました。 UIImageViewのanimationRepeatCountではrepeat count == 0は無限ループを意味し、このまま解釈するとiOS上では無限ループしてしまい、ブラウザと同様に再生できません。
GIFのフォーマットについて調べてみると、GIF内にはNetscape Looping Application Extension (GIF Unofficial Specification)という領域があり、ここにGIFのループ回数が記されていることがわかりました。
- [Netscape Looping Application Extension (GIF Unofficial Specification) - vurdalakov.net](http://w