如何为UICollectionViewCell创建阴影

7

我需要为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;


}

但是单元格变高了,这就是结果:

enter image description here

如果我移除:
self.layer.masksToBounds = NO;

单元格被正确地显示(它们之间有10像素的距离),但是阴影不可见。我做错了什么?此外,在layoutSubviews方法中添加阴影是正确的吗?

你需要单元格之间的间隔吗?设置shadowOffset并移除shadowPath。 - Vasanthan Prem
@VasanthanPrem 是的,我需要单元格之间的间距,如果我删除layoutSubviews中的代码,我可以正确地看到间距,但是使用该代码以添加阴影会导致单元格彼此之间没有空间。 - LS_
3个回答

7

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

[cell.layer setMasksToBounds:NO];

4
    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()

0
找到了,我忘记在layoutSubviews里添加这一行代码:
self.clipsToBounds = YES;

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接