2011-05-18 3 views
0

私のビューの1つでは、ビューに影を追加しています。影は左端の白いスペースを示しています。&右端。私はこれらのスペースを削除したい。ここでレイヤーを表示するために影を追加する際の問題

は私のコードです:ここでは

UIView *myView = [[ISTView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 35)]; 
myView.backgroundColor = [UIColor greyColor]; 
[myView.layer setShadowOffset:CGSizeMake(0.0, 5.0)]; 
[myView.layer setShadowOpacity:0.8]; 
[myView.layer setShadowRadius:2.0]; 
[myView.layer setShadowColor:[UIColor blackColor].CGColor]; 
[self.view addSubview:myView]; 
[myView release]; 

は、私の見解のO/Pである:私が考える可能性があり、また、働いている

enter image description here

+0

あなたは影が、下記の表面に、それはキャストだ、そこからオブジェクトよりも小さく表示されているという事実について話していますか?私は、その視点? –

+0

@Abnihav、あなたはshadowRadiusを増やそうとしましたか? – Zapko

+0

@Josh:それは正しい。 – Abhinav

答えて

2

その後、影が大きくなるようにします。 clipToBoundsをNOに設定することを忘れないでください。

UIView *myView = [[ISTView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 35)]; 
myView.backgroundColor = [UIColor greyColor]; 
myView.clipToBounds = NO; 

UIImageView *shadowView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 35, 320, 10)]; 
shadowView.image = [UIImage imageWithName:@"my-shadow.png"]; 
[myView addSubview:shadowView]; 
[shadowView release]; 

[self.view addSubview:myView]; 
[myView release]; 

システムがレイヤーのシャドウを計算するよりも、ビュー階層の上にキャッシュされた既存のイメージを描画する方が安いでしょう。

0

一つの解決策は、ビューのフレームを調整することですX位置と幅の2ピクセル:

UIView *myView = [[ISTView alloc] initWithFrame:CGRectMake(-2.0, 0.0, 324.0, 35)]; 

これはこれを行うよりクリーンなアプローチではありません。誰かがより良い解決策を持っている場合は、指導してください。あなたは、グラフィックエディタでそれを描くあなたのビューに伸縮性の画像とPNGと場所UIImageViewに保存することができ、副作用なしに均質な影をしたい場合は

1

使用shadowPathはビュー

view.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, view.frame.size.width+30, view.frame.size.height)].CGPath; 
+0

これは、負のX位置(-2.0)を設定し、幅を4.0ピクセル増加させるときに機能します。 – Abhinav

0

は、コードを削除し、これを試してみてください: [myView.layer setShadowRadius:2.0];

関連する問題