如何为 UICollectionViewCell 创建阴影

How to create shadow for UICollectionViewCell

我需要为 UICollectionView 中的单元格创建阴影。我对单元格进行了子类化,并在 layoutSubviews 中添加了以下代码:

-(void)layoutSubviews{

    [super layoutSubviews];

    self.layer.masksToBounds = NO;
    self.layer.shadowOpacity = 0.75f;
    self.layer.shadowRadius = 5.0f;
    self.layer.shadowOffset = CGSizeZero;
    self.layer.shadowColor = [UIColor blackColor].CGColor;
    self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;


}

但是细胞越来越高,结果是这样的:

如果我删除:

self.layer.masksToBounds = NO;

单元格显示正确(单元格之间的距离为 10px)但阴影不可见。我究竟做错了什么?另外,在 layoutSubviews 方法中添加阴影是否正确?

找到了,我忘了在layoutSubviews中添加这一行:

self.clipsToBounds = YES;

现在单元格既有间距又有阴影

您需要启用在边界外创建阴影;

[cell.layer setMasksToBounds:NO];
    func dropShadow() {   
    self.layer.masksToBounds = false   
    self.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.25).cgColor            
    self.layer.shadowOpacity = 0.5   
    self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0)   
    self.layer.shadowRadius = 4.0    
    self.layer.cornerRadius = 5.0  
}

//Direct Add Shadow to cell  

Cell.dropShadow()