3

私は長い間ウェブ上で解決策を探していました。ほとんどのチュートリアルは、UIView に影を追加することについてはかなり単純です。また、UIImageView に影を追加すると気付きました。画像自体にアルファ チャネルが含まれている場合、影の形状はコンテンツ画像の形状に完全に適合します。たとえば、画像が背景が透明な動物の場合、影の形もその動物と同じになります (UIImageView フレームと同じ長方形の影ではありません)。

しかし、これらは十分ではありません。私がする必要があるのは、影にいくつかの変更を加えて、回転角度と圧縮 (スクイーズまたはシフト) 効果を持たせて、太陽光が特定の場所から来ているように見せることです。

必要なものを示すために、Apple が作成した Google マップ アプリからキャプチャした以下の 2 つの画像をアップロードします。注釈ピンはピンの形をした画像なので、影も「ピンの形」になっていることが想像できますが、CGSize で単純に「オフセット」されているのではなく、影の上部が右に 35 ほどずれていることがわかります。度とわずかに高さを絞った。

タップアンドホールドしてピン留めすると、影もピンから離れてアニメーション化されるので、そのような影はプログラムで作成できると思います。

これまでに見つけた最高のシャドウ チュートリアルはhttp://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpathsですが、残念ながら、このエフェクトを作成することはできません。

どなたかご存知の方、または検索に適した言葉をご存知の方がいらっしゃいましたら教えてください。ありがとうございました。

(アプリでは画像の形状が動的であるため、Photoshop などのツールを使用して影を事前にレンダリングすることはできません。)

注釈ピンの影

タップ&ドロップ時の注釈ピンの影

4

3 に答える 3

2

このような動的な効果を作成するには、Core Graphics を使用する必要があります。使いこなせば驚くほど強力です。基本的には、コンテキストに傾斜変換を設定し、影を設定して画像を描画する必要があります。おそらく透明レイヤーも使用する必要があります。

于 2012-05-05T05:05:41.317 に答える
1

特定のユースケースを解決するためのものであるため、CALayer シャドウを使用できるようには思えません。Apple がマップ上のピン マークに対して採用するアプローチは、事前に (Photoshop などで) 作成された 2 つの別個の画像を用意し、基準点を基準にしてマップ内に配置することです。

実行時にこれを行う必要がある場合は、Core Graphics または ImageKit を使用することで可能です。ぼやけた影の外観を得るには、kCICategoryBlur CIFilter を使用できます。その後、画像をグレースケールに変換できます。そして、その圧縮された外観を得るには、画像のサイズを変更して歪ませるだけです。

2 つの別個の画像を取得したら、影の画像の CGImageRef を取得して別のサブレイヤーのコンテンツとして設定するか、別のビューとして追加することができます。

于 2012-05-08T15:37:47.910 に答える
0

すべての形状がわかっている場合は、Photoshop などで影の画像をレンダリングできます。

于 2012-05-04T17:22:27.250 に答える