iOSのヒントとコツ:Dynamic Default.png

iOS向けに開発するとき、顧客や一部のプログラマーには、「アプリケーションの起動時に何らかの方法でイメージを置き換えることは可能ですか?」という論理的な質問があります。

インターネットで少し検索し、 ドキュメントをざっと調べた後、答えは次の理由でこれが不可能であることを示唆しています。

しかし、それにもかかわらず、あらゆる種類の脱獄なしで、これを標準的な方法で行うことが可能です。 ただし、すべてのソリューションには利点、欠点、機能があります。



解決策


アプリケーションを使用してフォルダ内の内容を変更することはできないため、試してさえいません。 これを行うことができる職人が存在する可能性がありますが、これは彼らについてではありません。

そのため、DocumentsフォルダーにDefault.pngを配置します。


ここで、Default.pngがこのフォルダーにあると仮定して、Info.plistに相対パスを入力します。
image

出来上がり! 始めます。 すべてが機能します。

うん Default.pngファイルへの相対パスですべてが明確な場合、Defaults.pngをDocumentsフォルダーに配置する方法を考えてください。
プログラムで。 プログラムを最初に起動するとき、同じバンドルからコピーする必要があります。 実際、ここには既にいくつかのオプションがあります。インターネットからDefault.pngをダウンロードし、その場で生成し、Default.pngの代わりに撮った写真を添付し​​てください。 それはすべて、アプリケーションの詳細に依存します。

たとえば、次のようになります。
// Documents
NSArray* dirs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsPath = [dirs objectAtIndex:0];
NSString * splashDest = [documentsPath stringByAppendingPathComponent:@"Splash.png"];
NSString * splashSrc = [[NSBundle mainBundle] pathForResource:@"Splash" ofType:@"png"];

// Splash.png
NSFileManager * fm = [NSFileManager defaultManager];
[fm copyItemAtPath:splashSrc toPath:splashDest error:nil];


この方法の機能(主な欠点)は、最初の起動時にスプラッシュが表示されないことです。 アプリケーションをインストールしたときに、Documentsフォルダーに何かを書き込むことがすぐに可能になるまで、方法はありません

PS正式には、このメソッド HIG違反しません :... すべての起動イメージはPNGファイルであり、アプリケーションのバンドルディレクトリの最上位にある必要があります ...および... システムがアプリケーションを起動すると、一時的に静的な起動が表示されます画面上の画像 ...
そのため、App-Storeでこのメソッドを使用することは大きな問題です。
さらに、アプリケーションのローカライズの場合にこの方法がどのように機能するかは明確ではありません。

ただし、上記のすべてが適切な場合は、この方法を安全​​に使用できます。

Source: https://habr.com/ru/post/J119593/


All Articles