如何在ios的tableview中将阴影添加到单元格内的视图?

如何在ios的tableview中将阴影添加到单元格内的视图?,ios,iphone,swift,uitableview,autolayout,Ios,Iphone,Swift,Uitableview,Autolayout,我在XIB中创建了一个tableviewcell,并使用注册类在tableview中使用它。我在这里使用的是autolayout 但问题是当我在viewcontroller中加载tableview时,单元格内视图的阴影设置不正确。它超出了我在带有红色框的图片中所示的界限 但是当滚动表视图时,视图的阴影会按预期正确显示 cellforrowatinexpath中使用的代码如下所示: let layer = cell.cellContectView.layer layer.shado

我在XIB中创建了一个
tableviewcell
,并使用注册类在
tableview
中使用它。我在这里使用的是
autolayout

但问题是当我在
viewcontroller
中加载
tableview
时,单元格内视图的阴影设置不正确。它超出了我在带有红色框的图片中所示的界限

但是当滚动
表视图时,视图的阴影会按预期正确显示

cellforrowatinexpath
中使用的代码如下所示:

let layer = cell.cellContectView.layer
        layer.shadowOffset = CGSizeMake(1.0, 1.0)
        layer.shadowColor = UIColor.blackColor().CGColor
        layer.shadowRadius = 5
        layer.shadowOpacity = 0.2
        layer.masksToBounds = false
        layer.shadowPath = UIBezierPath(rect: layer.bounds).CGPath

请注意:模糊文本不是问题。出于安全原因,它是隐藏的

您可以尝试从cellForRowAtIndexPath中删除该层的代码,并将其放入您的cell类中:

override func prepareForReuse() {
    let layer = self.contentView.layer
    layer.shadowOffset = CGSizeZero
    layer.shadowColor = UIColor.blackColor().CGColor
    layer.shadowRadius = 5
    layer.shadowOpacity = 0.2
    layer.masksToBounds = false
    layer.shadowPath = UIBezierPath(rect: layer.bounds).CGPath
}

使用
QuartzCore
code在
UITableViewCell
中添加阴影会显著降低滚动性能。

最好创建阴影图形资源,并将其添加为
UIImageView

我尝试过。。但它使细胞阴影总是错误的,如图所示。。滚动时它甚至不会改变底部的灰色视图是另一个子视图?是的。。其类似的单元格内容视图有一个带有标签和图像的视图,并且正如您所要求的那样,已启动的底部视图被添加为带有标签和图像的视图中的子视图。在这种情况下,您还需要为视图指定一个角半径,以避免在内容视图外出现此白色角。clipstobounds不可用