2011-11-08 18 views
6

ペン先からサブクラスUIViewがロードされていて、その周囲を描画するための影を得ることができません。私はかなりの時間の全体のビューの周りに表示される影を取得しようとしています。後でアニメーション化するのを簡単にするために、それを自分のサブレイヤに配置することに決めました。私は、shadowLayerプロパティをNSLog座標とフレームが正しければCALayerを使用したUIViewに影が表示されない

-(void)awakeFromNib 
{ 
    self.clipsToBounds = NO; 

    // set up the shadow layer 
    CALayer *shadow = [CALayer layer]; 
    shadow.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.bounds.size.width, self.bounds.size.height); 
    shadow.shadowColor = [UIColor blueColor].CGColor; 
    shadow.shadowRadius = 15.0; 
    shadow.opacity = 1.0; 
    [self.layer addSublayer:shadow]; 
    // I set this property so I have access to it later to more easily animate it. 
    self.shadowLayer = shadow; 
} 

:ここでは、コードです。それは裏付けされているビューに一致します。

また、境界線の色とコーナーの半径をself.layerに設定すると、正しく表示されます。私がself.layerに影を置くと、それは私の親のすべてのサブビューを包囲しますUIView

ご協力いただきまして誠にありがとうございます。

答えて

3

QuartzCoreをインポートしているとします。私は&を設定して、UIViewの境界線を作成する必要があると思います。別にborderRadiusからこの[self roundedLayerWithShadow:yourView.layer radius:5.0f];

- (void)roundedLayerWithShadow:(CALayer *)viewLayer 
         radius:(float)r 
{ 
    [viewLayer setMasksToBounds:YES]; 
    [viewLayer setCornerRadius:r];   
    [viewLayer setBorderColor:[RGB(180, 180, 180) CGColor]]; 
    [viewLayer setBorderWidth:1.0f]; 

    [viewLayer setShadowColor:[RGB(0, 0, 0) CGColor]]; 
    [viewLayer setShadowOffset:CGSizeMake(0, 0)]; 
    [viewLayer setShadowOpacity:1]; 
    [viewLayer setShadowRadius:2.0]; 
    return; 
} 
+0

2つの影がある場合はどうなりますか? –

-2

を使用する方法は、お使いのshadow層は非常に透明に見えます。したがって、shadow.superlayerには影が落ちません。

+0

影は青色で不透明です。私が知る限り、それが目に見えてはならない理由はありません。 – bryanjclark

0

私は同じことに苦労し、shadowOpacityを1.0に設定する必要があることが判明しました。あなたのコードでは、誤ってshadowOpacityの代わりにopacityを使用します。それは私が持っていたのと同じ問題です。

関連する問題