2012-04-15 20 views

答えて

1

ビューの下側と右側に拡大された影の画像を持つ2つのUIImageViewsを追加することで、それを行うことができます。 UIImageViewsですべてのビューをカバーする必要はありません。必要なだけクリップします。 iPhoneのツイッターのカラーブレンドレイヤーを見て、私はUIImageViewsを使ってその美しいシャドウを作成すると信じています。そしてそれはシステムリソースを節約します。もちろん、CALayerを使って影を作成することはできますが、影を描画するためにシステムリソースを消費すると思いますので、CALayerが私にとって第2の選択肢です。

19

CAGradientLayer *shadow = [CAGradientLayer layer]; 
shadow.frame = CGRectMake(-10, 0, 10, myView.frame.size.height); 
shadow.startPoint = CGPointMake(1.0, 0.5); 
shadow.endPoint = CGPointMake(0, 0.5); 
shadow.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite:0.0 alpha:0.4f] CGColor], (id)[[UIColor clearColor] CGColor], nil]; 
[myView.layer addSublayer:shadow]; 

は、あなたのニーズに合わせてframeを変更する必要があります。この例では、左側のビューの高さに沿って影が表示されます。開始点と終了点を変更して、影の方向を制御することもできます。

+1

CALayerのshadowOffsetとshadowRadiusを使用して目標を達成する方法はありますか? – tom

+0

フレームを変更することでそれができると思います。 – edc1591

0
UIBezierPath *shadowPath = [UIBezierPath 
bezierPathWithRect:self.yourViewObj.bounds]; 
self.yourViewObj.layer.masksToBounds = NO; 
self.yourViewObj.layer.shadowColor = [UIColor blackColor].CGColor;//*** color you want for shadow 
self.yourViewObj.layer.shadowOffset = CGSizeMake(5.0f, 5.0f); 
self.yourViewObj.layer.shadowOpacity = 0.7f; 
self.yourViewObj.layer.shadowPath = shadowPath.CGPath; 
関連する問題