只有在点击后,UIView才能在动态UITableViewCell中正确调整大小

时间:2016-01-16 09:36:51

标签: ios uitableview uiview

我尝试在我的UITableView中实现类似CardView的内容,因此每个表格单元格都有UIView(名为cardView)和上下文UIView

我在layoutSubviews()中为每个单元格添加阴影,如下所示:

cardView.layer.cornerRadius = 3
cardView.layer.shadowColor = UIColor.darkGrayColor().CGColor
cardView.layer.shadowOffset = CGSizeMake(0,1)
cardView.layer.shadowRadius = 3
cardView.layer.shadowOpacity = 0.5
cardView.layer.shadowPath = UIBezierPath(rect: cardView.bounds).CGPath

但结果我得到了:

Screenshot

仅在点击之后阴影正在调整大小。我认为这是动态细胞高度的问题,但我无法解决这个问题。

我创建了working example

1 个答案:

答案 0 :(得分:1)

将此代码添加到视图控制器:

    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    let cel = cell as! TableCell
    cel.setup()
}

将此代码添加到TableCell:

    func setup() {
    cardView.layer.masksToBounds = false
    cardView.layer.cornerRadius = 3
    cardView.layer.shadowOffset = CGSizeMake(0,1)
    cardView.layer.shadowRadius = 3
    cardView.layer.shadowOpacity = 0.3
    cardView.layer.shadowPath = UIBezierPath(rect: cardView.bounds).CGPath
}