如此question中所示,可以使用此类代码添加下拉阴影:
self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowRadius = 1;
self.layer.shadowOpacity = 0.3;
但是这不能是硬件加速,所以渲染需要很长时间,当在tableview中使用时,需要重绘每个单元格,它会减慢很多!
解决这个问题后,有没有人知道顺利完成这项工作的方法?
答案 0 :(得分:1)
我找到了解决问题的方法,它更像是一种解决方法,但对我来说工作正常,我创建了自定义类ShadowVIew,为任何UIView进行了正确设置,并在其下方添加了一个深色透明视图像一个影子:
这是代码:
ShadowView.m
#import "ShadowView.h"
@interface ShadowView()
@property (nonatomic) UIView * shadow;
@end
@implementation ShadowView
-(id)initWithCoder:(NSCoder *)aDecoder{
if ((self = [super initWithCoder:aDecoder])) {
self.layer.masksToBounds = NO;
self.layer.cornerRadius = 8; // if you like rounded corners
}
return self;
}
-(void)layoutSubviews{
[super layoutSubviews];
if (self.shadow.superview == nil) {
UIView * parent = self.superview;
self.shadow = [[UIView alloc] initWithFrame:self.frame];
self.shadow.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.3];
CGRect frame = self.shadow.frame;
frame.origin.y+=1;
frame.origin.x-=1;
frame.size.width+=2;
self.shadow.frame = frame;
self.shadow.layer.masksToBounds = NO;
self.shadow.layer.cornerRadius = 8;
[parent insertSubview:self.shadow atIndex:0];
}
@end
请记住,这不是完美的解决方案,但可以快速实施。如果您的视图没有经常加载,您可以简单地添加石英绘制的阴影,因此它不会影响应用程序的性能。
self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowRadius = 1;
self.layer.shadowOpacity = 0.3;
希望它有助于某人:)