我有一个从 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/