2014-09-24 105 views
0

在本question看到,可以通过使用这种类型的代码添加下拉阴影:如何添加下拉在的tableview细胞阴影中的iOS

self.layer.shadowOffset = CGSizeMake(0, 1); 
self.layer.shadowRadius = 1; 
self.layer.shadowOpacity = 0.3; 

但是,这不能被硬件加速,所以需要很长时间才能呈现,并且在桌面视图中使用时,需要重绘每个单元格,这会减慢很多!

有了这个解决之道,有没有人知道这样做顺利吗?

回答

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; 

希望它可以帮助别人:)