LoginSignup
0
1

More than 3 years have passed since last update.

LaunchScreenの画像をVector(PDF)画像に置き換えてもアプリ起動時の画像が変わらなかった問題

Posted at

結論

方法1

  • LaunchScreenに使っているAssetsの画像名を変更する

方法2

  • cacheを削除するコードを呼び出す(参考元)
    • 試してないので実際に効果あるかは未確認
filename.swift
import UIKit

public extension UIApplication {
    func clearLaunchScreenCache() {
        do {
            try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
        } catch {
            print("Failed to delete launch screen cache: \(error)")
        }
    }
}

ことの始まり

iOSのアプリ起動時に表示されるLaunchScreenだが、多くはアプリやブランド、企業のロゴ画像を表示しているだろう。

このロゴ画像が何かしらの理由で差し替えが必要になった際、単純にAssetsの画像を入れ替えるだけでは上手くいかないことがあった話である。

今回ロゴ画像にノイズが乗っており見栄えが悪かったので、ノイズのない画像をVector画像で用意してもらった。

そして単純にAssetsでファイルを入れ替えを行ったところ、アプリ起動時の画面ではなぜか古い画像が表示されたのである。

原因

このLaunchScreenで使用しているロゴ画像は、アプリの別画面でも使用していたので、そちらを確認したがそちらは正しく新しい画像が表示されていた。

結構前にもLaunchScreenの画像の表示が上手くいかないことがあったのを記憶していたこともあって、原因に思い当たる節があった。

それは… キャッシュ(cache) である。

調査

cacheなら期限とか時間置けば消えるだろうと思って大雑把に日付を進めてはアプリを起動して画像が新旧どちらが表示されるか確認したところ、

  • 約30日後 => cacheが残っている
  • 約60日後 => cacheが消えている

ロゴ画像を差し替えたいのに、実際にそのipaをリリースしてからcacheが消えるまで悠長に待つ開発者なんているだろうか?あほなの?



ならば、どうやったら即時反映されるか、弄り回した結果、どうもAssetsの画像名でcacheしているらしくAssetsの画像名を変更するがお手軽かつ最速だと判断した。


おまけでcacheなら意図的消してしまえばいいのでは?と思い調べたところcacheを消す話を書いているサイト(結論の方法2の参考元)を見つけたが、cacheがあることで高速起動している点もあるだろうことから、コードでcache消すのはあまりいい感じがしなかったので止めた。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1