2012-07-25 13 views
5

私は、以下のいずれかのスニペットを見たことがあります。ドロップシャドウのような単純なものでは複雑すぎる、UIViewのサブクラス化とquartz2dコールの使用が必要です。作業。UIViewのシンプルな(矩形の)ドロップシャドウ

私は別のビューにサブビューとして追加しています(サブビューは別のviewControllerから取得されています。私はちょうど割り当てています。または何か。それについては、最も単純で最も受け入れられる方法は何ですか?私はそれがiOS 4で動作するようにしたいのですか?

答えて

10

それは<QuartzCore/QuartzCore.h>をインポートし、以下のように同様のスニペットを使用するのと同じくらい簡単です:

self.viewAboutContainer.layer.shadowColor = [[UIColor blackColor] CGColor]; 
self.viewAboutContainer.layer.shadowOpacity = 0.7; 
self.viewAboutContainer.layer.shadowRadius = 4.0; 
self.viewAboutContainer.layer.shadowOffset = CGSizeMake(5.0f, 5.0f);  
self.viewAboutContainer.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.viewAboutContainer.bounds].CGPath; 
+2

はまた確認してくださいself.viewAboutContainer.clipsToBounds =そのNO。そうしないと、影がビューの外側に落ちて、クリップされます。 –

+0

@Brayden私は "[myview.layer setShadowPath:[UIBezierPath bezierPathWithRect:myview.bounds] .CGPath];"を使って性能問題を解決しました。ポートレートモードではスムーズなスクロールでシャドーとコーナーの荒さがうまく機能しています。私のアプリは両方のモードでサポートされていて、正しく動作しない方向のシャドウを変更すると(ポートレイトビューのフレームに従ってシャドー表示されます)、これを解決する方法は何ですか? – Hitarth

+1

@VictorEngel viewAboutContainerは_any_ UIViewの名前、またはUIView(つまりUIImageView)を継承するものです。名前は単なるプレースホルダです。 – Brayden