2016-05-04 16 views
0

は、私はこれが私のUIImageViewViewControllerに設定されていることを示すことから始めてみましょう:Swiftに不規則な図形を表示するための良い選択肢はどれですか?

enter image description here

ラインの各1は、本体部分のUIButtonが含まれています。特定のボタンを選択すると、適切にセグメンテーションが行われます。

What'd私がやりたいことは、ユーザーのタップ、である(ただし、解放されません)ボタン、私はこのように表示するために、適切な身体の部分が欲しい:

enter image description here

私は2つのオプション使ってこれを実現することができます描画する

  1. UIBuzierPathクラスが、前の質問に似てうまくフィット得るために試行錯誤して、本体部あたり、多くのオーバーラップ形状の多くを取る:Create clickable body diagram with Swift (iOS)
  2. 強調表示された身体部分を元の画像から切り抜いて、UIButtonが選択されていることに応じてUIImageViewの上に配置します。その後、オプション1.

は今、私の質問はそれを行う方法はありませんが、これは、CPUの面でこれを達成するためのより良い選択肢だろうが唯一の身体部分ごとに画像があるだろうが、それでもあまり面倒処理とメモリの割り当て?

つまり、私はちょうど私のアプリの遅れやアプリサイズのストレージを取ることに懸念しています。私は、それを行うのにどれくらいの時間がかかるか心配していません。すべての形状を描こうとすると、アプリが吃音をしないようにしたいと思っています。

ありがとうございました。

+0

私はそれがSwiftではないことを知っていますが、いつでもhtmlでダイアグラムを作成し、WebViewに読み込むことができます。それはほとんどCPUを取ることはありません! – brimstone

答えて

3

これらのアプローチのいずれかがCPUまたはメモリに重大な影響を与える可能性は非常に低いです。特にオプション2の場合は、カットアウト画像のアルファチャンネルを使用し、半透明の色付きオーバーレイにするだけです。 CPU/GPUのどちらのアプローチでも、最大画面リフレッシュレート60fps(これはユーザーがパフォーマンス上の問題に気付く方法である)を下回りません。メモリワイズで、ベゼルパスやシングルチャンネルの画像をRAMにロードすると、特にApple Watchでない限り、過去5年間にリリースされたiOSデバイスでは、利用可能なものと比べてバケツが落ちるはずです。

「早すぎる最適化はすべての悪の根源です」ということに注意してください。パフォーマンスの問題を見たことがないか、それが存在すると信じる理由がない限り、コードをより読みやすく、簡潔に、再利用可能にするなどの他の懸念に時間を費やすほうがよいでしょう。Wikipediaの「最適化するタイミング」の短いセクションを参照してください。https://en.wikipedia.org/wiki/Program_optimization#When_to_optimize

1

Xcodeにはテスト機能が組み込まれています(パフォーマンステストもあります)。そのため、最良の方法は、1つのボディパートに対して両方のメソッドを試し、結果を比較することです。

もう少し遅くても、ユーザーに気付かれると同時に実装するのがはるかに簡単な方法があるかもしれません。

テストのクイックスタートについてhere

パフォーマンステストhere

関連する問題