私は長年にわたりウェブ上のソリューションを探していました。ほとんどのチュートリアルは、UIViewにシャドーを追加することについてかなり簡単です。また、UIImageViewに影を追加すると気付きました。画像自体にアルファチャンネルがある場合、影の形状はコンテンツ画像の形状に完全に適合することができます。たとえば、イメージが透明な背景を持つ動物である場合、影の形もその動物と同じです(UIImageViewフレームと同じ矩形の影ではありません)。UIImageViewにイメージコンテンツの形状に合ったシャドーを追加する方法(ローテーションとシフトエフェクトを使用)
しかし、これでは不十分です。私がする必要があるのは、シャドウにいくつかの変更を加えることです。回転角度と圧縮(スクイーズまたはシフト)エフェクトがあるため、太陽光が特定の場所から来るように見えます。
私が必要としていることを示すために、アップルが作成したGoogle Map Appから取り込んだ2枚の画像をアップロードします。 Annotation PinはPinの形をしたイメージなので、影も「ピン状」ですが、CGSizeで単純に「オフセット」されているわけではありません。高さをわずかに絞った。
私たちがタップ&ホールドしてピンすると、シャドウもピンからアニメーション化されるので、そのようなシャドウをプログラマブルに作成できると思います。
私が今までに見つけた最高のシャドーチュートリアルはhttp://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpathsですが、残念ながら、この効果はありません。
誰かが答えを知っているか、検索するためのより良い単語を知っている場合は、私に知らせてください。ありがとうございました。
(画像の形状がそうするプリレンダリング影がオプションではありませんPhotoshopのような任意のツールを使用して、アプリケーションで動的であることに注意してください。)
これを行う方法は、ダイナミックライティングのオプションを含む3Dエンジンをプロジェクトに組み込むことです。アプリケーションが完全に2Dであっても、あなたが暗示している概念は、光の位置、影を引き起こすオブジェクト、影が反映される表面に基づく3D問題です。 –
あなたは '.shadowPath'プロパティでの作業を試みたと思いますか? –
はい、shadowPathを試しましたが、UIImageViewのコンテンツの元の形状(透明な背景を持つUIImageです)に基づいてshadowPathを取得することに慣れていません---これはこの質問の要点です。 nachbaur.comのチュートリアルでは、shadowPathの作成について言及しています。しかし、楕円形のシャドーパスや、UIImageView(四角形)に基づくシェイプを作成しています。あなたのコメントのために –