3

私はiPhoneアプリにいくつかの機能を追加しており、この問題を解決するための最速/最も効率的/ベストプラクティスのアプローチを選択するのに役立つ可能性があります。

画面の上半分には、画面全体(動的なxとyの位置)に変換されるUIImageViewである吹き出し(漫画本を考えてください)があります。ふきだしの背景に画像があるのでUIImageViewです。

各吹き出しには、画面の下部(レイヤーツリーの他の場所)を移動する一致する画像があります

尾(吹き出しからの三角形のビット)を描画して、三角形のポイントが下の画像を追跡し、三角形の底が上のUIImageViewの下部に接続されるようにします。(技術的には、ベースを突き合わせる必要はありません。背景画像の色を三角形に一致させることができる限り、ベースを重ねることができます)。

私はすでにすべての追跡を行い、CGContextStrokePathメソッドを使用して線を描画しましたが、線を三角形に置き換える方法に固執しています。

私はクォーツで三角形を描き、それを埋めることを見てきました。私の懸念は、吹き出しが1/10秒ごとに再配置されることです。概念実証に使用される線だけを描くと、パフォーマンスや視覚的な滑らかさにかなりの影響があったようです。

私が持っているアイデアの1つは、三角法を自分で行い、三角形の画像を伸ばして回転させて、これらの吹き出しのそれぞれを下のスポットに接続することです。より効率的でエレガントなソリューションがあるとのことですが、ドキュメントを見るとわかりません。この問題にどのように取り組んでいるか、またはどのように取り組むかについての助けをいただければ幸いです。ありがとう。

4

1 に答える 1

0

吹き出しのサイズが固定されている場合は、静的な UIImage を使用してください。画像ビューの layer.position プロパティを三角形のポイントに設定します。その後、ビュー アニメーションを使用してバブルを移動できます。

吹き出しを異なるサイズにする必要がある場合は、resizableImageWithCapInsets を使用してサイズ変更可能な画像を作成します。次に、上記と同じように配置します。

静止画像やサイズ変更可能な画像では達成できない特別なことが吹き出しにある場合は、カスタム CA レイヤーまたは複数のレイヤーを作成して、必要な効果を得ることができます (形状のあるグラデーション レイヤーのように)。レイヤーをマスクレイヤーとして)

于 2012-04-30T23:16:42.137 に答える