iphone - 使用 CALayer 的 UIView 不显示阴影

标签 iphone ios cocoa-touch core-animation calayer

我有一个从 Nib 加载的子类 UIView,但我无法在它周围绘制阴影。我现在正试图让阴影出现在整个 View 周围很长一段时间。我选择将它放在它自己的子层中以简化以后的动画制作。这是代码:

-(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;
}

当我NSLog shadowLayer 属性时,坐标和框架是正确的。它与其支持的 View 相匹配。

我还在 self.layer 上设置了边框颜色和圆角半径,它显示正确。如果我将阴影放在 self.layer 上,它会出现,但它包含我的父级 UIView 的所有 subview 。

非常感谢任何帮助。

最佳答案

我假设您已导入 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;
}

关于iphone - 使用 CALayer 的 UIView 不显示阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8045167/

相关文章:

objective-c - 如何刷新 NSFetchedResultsController?

iphone - 为什么应用无法访问其他应用的文档文件夹?

iOS10:当 secureTextEntry 时,UITextfield 因长时间输入而挂起

iphone - 使用 drawRect 自定义 UITableViewCell 的编辑模式

ios - 添加到导航堆栈的多个调用

ios - 在 Mailcore2 中使用 partID 获取 bodyHTML 时出现问题

iphone - Xcode 7 Asset Catalog 的图像设置了奇怪的状态图标

ios - 如何将路线时间显示为谷歌地图

iOS:无法检测到 CALayer 边界外的触摸

iphone - __block 变量应该保留在 block 中