CAGradientLayer在滚动到UITableView顶部之后位置有误。 迅速

我需要在特定的UITableViewCell底部制作一个阴影。 我做了它,但是当我滚动到底部它工作正常,当我滚动到顶部阴影有错误的位置,它出现在UITableViewCell的顶部。 我尝试了几种方法,但它不适合我。 我读了这个问题和这个问题我该如何解决?

  func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier(cellReuseIdentifier, forIndexPath: indexPath) as! LifelineLeaderboardTableViewCell // Configure the cell... let lifelineRecentModel = users[indexPath.row] cell.clipsToBounds = false if let currentUserID = DBHelper.instance.mainUserId { if lifelineRecentModel.user.id == currentUserID { cell.setupUserNumberLabelTextColor(true) cell.showBlueLineView(true) // cell.showShadow(true) let shadowView = UIView(frame: cell.bounds) let shadowFrame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: cell.bounds.width, height: 90)) let shadowPath = UIBezierPath(rect: shadowFrame).CGPath let shadow = CAGradientLayer() shadow.shadowOpacity = 0.25 shadow.shadowColor = UIColor.blackColor().CGColor shadow.shadowPath = shadowPath shadowView.layer.insertSublayer(shadow, atIndex: 0) cell.contentView.addSubview(shadowView) } else { cell.setupUserNumberLabelTextColor(false) cell.showBlueLineView(false) // cell.showShadow(false) } } else { cell.setupUserNumberLabelTextColor(false) cell.showBlueLineView(false) // cell.showShadow(false) } return cell } 

另外我尝试了我的以下function

  func showShadow(bool: Bool) { let shadowFrame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: bounds.width, height: bounds.height + 10)) let shadowPath = UIBezierPath(rect: shadowFrame).CGPath layer.shadowOpacity = 0.25 layer.shadowColor = UIColor.blackColor().CGColor layer.shadowPath = shadowPath clipsToBounds = !bool } 

我也试过了

  cell.clipsToBounds = false if let currentUserID = DBHelper.instance.mainUserId { if lifelineRecentModel.user.id == currentUserID { cell.setupUserNumberLabelTextColor(true) cell.showBlueLineView(true) // cell.showShadow(true) cell.layer.shadowPath = UIBezierPath(rect: cell.bounds).CGPath cell.layer.shadowOpacity = 0.5 cell.layer.shadowOffset = CGSize(width: 0, height: 10) } else { cell.setupUserNumberLabelTextColor(false) cell.showBlueLineView(false) // cell.showShadow(false) cell.layer.shadowOpacity = 0 } } else { cell.setupUserNumberLabelTextColor(false) cell.showBlueLineView(false) // cell.showShadow(false) cell.layer.shadowOpacity = 0 } 

我认为你应该从阴影中去掉阴影。 喜欢这个

 if let currentUserID = DBHelper.instance.mainUserId { .......... } else { ....... shadow.shadowColor = UIColor.clearColor().CGColor } 

你可以添加截图'坏'单元格吗?