我有一个自定义UITableViewCell,带有一个自定义大小的UILabel和一个阴影。

class CustomCell: UITableViewCell {

  @IBOutlet weak var titleLabel: UILabel!
  @IBOutlet weak var cellBackgroundView: UIView!
  @IBOutlet weak var creationDateLabel: UILabel!

  override func layoutSubviews() {
    super.layoutSubviews()
    self.cellBackgroundView.layer.cornerRadius = 12

    self.cellBackgroundView.layer.shadowColor = UIColor.black.withAlphaComponent(1.0).cgColor
    self.cellBackgroundView.layer.shadowOffset = CGSize.zero
    self.cellBackgroundView.layer.shadowRadius = 9
    self.cellBackgroundView.layer.shadowOpacity = 0.8
    self.cellBackgroundView.layer.shadowPath = UIBezierPath(rect: self.cellBackgroundView.bounds).cgPath
    self.cellBackgroundView.layer.masksToBounds = false
    self.cellBackgroundView.layer.shouldRasterize = true

    self.cellBackgroundView.layer.rasterizationScale = UIScreen.main.scale
  }
}

我试图在layoutSubviews()cellForRowAt: indexPathwillDisplay cell中实现此代码,但它始终处于关闭状态且未居中:

ios - 自动调整大小的UITableViewCell阴影已关闭-LMLPHP
正确的实现方式是什么?

编辑:当我开始在tableView中滚动时,它可以工作。

编辑2:这应该是这样的:

ios - 自动调整大小的UITableViewCell阴影已关闭-LMLPHP

谢谢!

最佳答案

试试您发布的无行代码:

self.cellBackgroundView.layer.shadowPath = UIBezierPath(rect: self.cellBackgroundView.bounds).cgPath

这应该够了吧。

10-08 01:05