首页 > 解决方案 > Swift UITableViewCell 阴影没有出现

问题描述

我正在尝试创建在我的其他 UIViewControllers 中正常工作的自定义表格视图单元格。但是,在我的一个控制器中,阴影没有增长,我几乎看不到阴影。

这是阴影显示为红色的图像,您可以看到它几乎不可见。

在此处输入图像描述

我的单元格在 contentView 中添加了一个 UIView 以创建浮动单元格效果——我的控制器中使用了相同的代码和相同的故事板布局,但这是发生阴影问题的唯一表格视图——所以我一定遗漏了一些东西。

我的addShadow扩展:

extension UIView {
    func addShadow(offset: CGSize, color: UIColor, radius: CGFloat, opacity: Float) {
        layer.masksToBounds = false
        layer.shadowOffset = offset
        layer.shadowColor = color.cgColor
        layer.shadowRadius = radius
        layer.shadowOpacity = opacity
    }
}

awakeFromNib在自定义单元格上:

::cellContentView是我的 UIView 添加到contentView单元格的基础。

   override func awakeFromNib() {
        super.awakeFromNib()

        self.backgroundColor = .clear
        self.selectionStyle = .none
        cellContentView?.layer.masksToBounds = true
        cellContentView?.round(corners: [.topLeft, .topRight, .bottomLeft, .bottomRight], radius: 10)
        cellContentView?.addShadow(offset: CGSize(width: 40, height: 60), color: UIColor.red, radius: 10, opacity: 1)
        cellContentView?.layer.shouldRasterize = true
    }

注意:这.round是我所有单元格上使用的扩展名。

无论我为这个阴影添加什么半径或偏移量,它都不会比图像大。此外,我的控制器中的其他单元都不需要shouldRasterize设置该属性,但确实如此。

有谁知道这里发生了什么?谢谢 :)

编辑

奇怪的是,如果我在我的视图周围添加约束以保持我的视图和单元格内容视图之间的差距很大,背景颜色就会消失 - 这在情节提要中设置为白色。

在此处输入图像描述

标签: iosswiftxcodeuitableview

解决方案


您应该调用 layoutSubviews 方法。因为在视图上传后应该添加阴影

override func awakeFromNib() {
    super.awakeFromNib()
    //init methods
}

override public func layoutSubviews() {
    super.layoutSubviews()
    //Added shadow
    self.reloadLayers()
}

private func reloadLayers() {
    self.layer.cornerRadius = 5
    self.addShadow(.TransactionCell)
}

我希望它有帮助


推荐阅读