阴影不会出现在使用CALayer的UIView上

Dav*_*Nix 6 iphone cocoa-touch core-animation calayer ios

我有一个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;
}
Run Code Online (Sandbox Code Playgroud)

当我NSLogshadowLayer属性,坐标和框架是正确的.它与它支持的视图相匹配.

我还设置了边框颜色和角半径self.layer,它显示正确.如果我把阴影放在self.layer它上面,但它包含了我父母的所有子视图UIView.

任何帮助是极大的赞赏.

Sri*_*aju 3

我假设你已经QuartzCore进口了。我认为您需要设置并创建UIView. 这个的使用方法[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;
}
Run Code Online (Sandbox Code Playgroud)