Ios swift-UIView阴影未正确渲染

Ios swift-UIView阴影未正确渲染,ios,swift,uiview,shadow,Ios,Swift,Uiview,Shadow,我的手机里有UIViewUICollectionview首先加载,阴影看起来不像我预期的那样。但当我滚动时,阴影变得正常 self.backView.layer.cornerRadius = 3 self.backView.clipsToBounds = true self.backView.layer.shadowPath = UIBezierPath(roundedRect: self.backView.bounds, cornerRadius

我的手机里有
UIView
<代码>UICollectionview首先加载,阴影看起来不像我预期的那样。但当我滚动时,阴影变得正常

        self.backView.layer.cornerRadius = 3
        self.backView.clipsToBounds = true
        self.backView.layer.shadowPath = UIBezierPath(roundedRect: self.backView.bounds, cornerRadius: self.backView.layer.cornerRadius).CGPath
        self.backView.layer.shadowColor = UIColor.blackColor().CGColor
        self.backView.layer.shadowOpacity = 0.3
        self.backView.layer.shadowOffset = CGSizeMake(0, 1)
        self.backView.layer.shadowRadius = 1
        self.backView.layer.masksToBounds = false
渲染错误的阴影:

正确渲染的阴影:

编辑1:我找到了根本原因,但没有找到解决方案。故事板的单元框和运行时的单元框不同,因为我更改了单元高度和宽度,如下所示:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        return CGSizeMake(collectionView.frame.width/3, collectionView.frame.height)
    }
因此,当我删除此代码时,阴影会正确显示。但我无法通过代码设置宽度和高度。

您可以试试这个

self.backView.layer.shadowColor = UIColor.black.cgColor
self.backView.layer.shadowOpacity = 1
self.backView.layer.shadowOffset = CGSize.zero
self.backView.layer.shadowRadius = 2

您在哪里运行了该代码?在CollectionViewCell内显示您的cellForItemAtIndexPath中的一些附加代码在返回单元格之前添加单元格。layoutIfNeeded()