【问题标题】:UITableViewCell shadowsUITableViewCell 阴影
【发布时间】:2024-01-13 20:57:01
【问题描述】:

我正在尝试实现此设计,但我浏览过的所有解决方案都不起作用,据我了解,这可能是因为单元格和 UITableView 之间的间距。
这是设计:

所以基本上我想要实现的是让所有 4 个侧面的阴影以及每个单元格和下一个单元格之间的一些间距。 谢谢

编辑: 这是我尝试过的代码。

let shadowSize : CGFloat = 5.0
let shadowPath = UIBezierPath(rect: CGRect(x: -shadowSize / 2,
                                           y: -shadowSize / 2,
                                           width: self.avatarImageView.frame.size.width + shadowSize,
                                           height: self.avatarImageView.frame.size.height + shadowSize))
self.avatarImageView.layer.masksToBounds = false
self.avatarImageView.layer.shadowColor = UIColor.black.cgColor
self.avatarImageView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
self.avatarImageView.layer.shadowOpacity = 0.5
self.avatarImageView.layer.shadowPath = shadowPath.cgPath

编辑 2: 我想指出,我所有的单元格对象都在容器 UIView 内。上面所有的代码都应用到了这个 UIView 上。

【问题讨论】:

标签: ios swift uitableview


【解决方案1】:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    cell.layer.shadowOffset = CGSize(width: 0, height: 0)
    cell.layer.shadowColor = UIColor.black.cgColor
    cell.layer.shadowRadius = 5

    cell.layer.shadowOpacity = 0.40
    cell.layer.masksToBounds = false;
    cell.clipsToBounds = false;
    return cell
}

【讨论】:

  • 请编辑您的答案并解释它如何解决问题。
【解决方案2】:

您必须创建一个UIView inside UITableViewCell 并处理该视图。

我在UITableViewCell CLASS 中使用这个阴影:-

viewDummy.addShadow() //use from any view

extension UIView {
    func addShadow(){
        self.layer.shadowColor = UIColor.blackColor().CGColor
        self.layer.shadowOpacity = 0.5
        self.layer.shadowRadius = 2.0
        self.layer.shadowOffset = CGSizeMake(1.0, 1.0)
    }
}

【讨论】:

  • 工作完美。我想我的主要问题是包含 UIView 被固定在 0 0 0 0 所以阴影永远不会出现。
  • 是的。都好。我不得不将包含视图的固定从 0 0 0 0 更改为可能比 shadowRadius 更大的东西,所以 5 5 5 5 起作用了。
  • cell.layer.masksToBounds = false; cell.clipsToBounds = false;是工作的主要关键