13

かなりの数の画像を使用する iOS アプリを開発しています。アプリに画像をロードする方法について、私はちょっと混乱しています。5年ほど前に似たような質問がありました。しかし、それ以来、多くのことが変わりました。それで、新しいスレッドを開始する方が理にかなっていると思いました。

私が持っていると思う主に2つのオプションがあります。

  1. PaintCode アプリ (ここで見つけることができます) を使用して、実行時に画像を描画するための CG コードを提供します。

  2. .png 画像ファイルを配置 (1x、2x、3x)

最初のオプションのようなものは次のとおりです。

• The first most important and unbeatable feature: Draw dynamic images i.e. to be able to change the content and gives basic animation effects using variables and equations

• The second most important thing: parametric images that behaves perfectly when frame changes no stretching or distortion

• Less size - As we not gonna use image files, reduces the overall size of the app drastically (top concern these days). E.g. PaintCode App in itself weights only ~5 MB (leaving out icon files).

• Resolution independence

• Very easy to use. Especially you don't need to remember names. You simply make some function calls.

私の主な懸念事項は次のとおりです。

  1. 実行時に画像を描画すると、パフォーマンスやその他の重要なパラメーターに影響しますか。
  2. どのような状況下で、png ファイルの方が適しているでしょうか。

そこで、有識者の方のご意見をお待ちしております。前もって感謝します。

4

1 に答える 1

14

描画が単純な場合は、Core Graphics を使用してください。

Core Graphics/PaintCode アプローチを支持するすべての点で正しいです。

あなたが言うように、それは将来の証明であり、資産をインポートするよりもはるかに柔軟です.

  • そのカスタム ボタンの色を変更しますか? 解像度ごとに 3 つの画像を再作成する代わりに、関数に別の引数を入力します。

  • その図面を拡大したいですか?新しいサイズで再描画するだけです。

  • 新しい iPhone 8s は近い将来、4 倍ディスプレイを搭載して登場しますか? あなたのアプリはすでにそれを処理できます。

あなたも言っているように、アプリバンドルのサイズが小さくなります。これは驚くべきことです。

  • これにより、ユーザーのダウンロードが少なくなり、サイズの最適化について心配する必要がなくなります。

でも。

Core Graphics での描画は 100% CPU 上で行われるため、メイン スレッドで多数の複雑な描画を行うとパフォーマンスに影響します。

Tricertops が言うように、複雑な CG 描画の代表的な例は、大きな半径を持つ影です。もう 1 つの例は、コンテキストで複雑なパスを使用することです。

ただし、絶望しないでください。これに対抗する方法があります。

  • バックグラウンド スレッドで画面外に描画し、描画された画像をメイン スレッドの画面に渡すことができます (メイン スレッドから UI の更新を行う必要があります)。どこからともなく画面)。ただし、これは、アプリの後の段階で使用する複雑な図面を読み込む場合に適しています。

  • アプリの読み込み時に Core Graphics 画像を読み込むことで、アプリの起動時間を犠牲にすることもできますが、描画する必要がある画像の複雑さと数によっては、これはユーザーにとって望ましくない場合があります。

  • 頻繁に描画する画像 (ボタンの背景など) のキャッシュを保持することで、描画を再利用できます。これにより、RAM を少し犠牲にすることでパフォーマンスが向上します。パラメータ化されていない StyleKits を使用すると、 PaintCode は実際にこれを自動的に行います

ただし、iOS ハードウェアはこの質問がされたときよりもはるかに高速であるため、Core Graphics コードを描画する実際の CPU 使用率は以前よりもはるかに少なくなるため、より高速なデバイスでより複雑な描画を行うことができるようになりました。 .

ただし、一部の複雑な描画は単純に不可能であるか、Core Graphics で作成するのに永遠にかかる場合があります。この場合、画像を使用することを強くお勧めします。

回答者があなたがリンクした投稿に非常に雄弁に言ったように:

最速のプログラムは、市場に最初に到達するプログラムです。

Core Graphics で図面を作成するのに何週間も費やしていることに気付いた場合は、画像だけを使用して、その時間をより生産的に費やす方がよいでしょう。


ただし、描画をシンプルに保ち、可能な限り描画を再利用する限り、Core Graphics を使用する際のパフォーマンスの問題について心配する必要はありません。

私の意見では、単純な描画に Core Graphics/PaintCode を使用する利点は、適切に使用されている限り、欠点をはるかに上回ります。

于 2016-02-12T18:41:08.017 に答える