UITableViewCell 改变高度

Posted

技术标签:

【中文标题】UITableViewCell 改变高度【英文标题】:UITableViewCell changing height 【发布时间】:2016-03-15 19:41:19 【问题描述】:

我想改变表格视图中被触摸行的高度(所以它会扩展):

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    let cell = tableView.cellForRowAtIndexPath(indexPath) as! CustomTableViewCell
    if let currentSelection = self.currentSelection 
        if currentSelection == indexPath 
            tableView.deselectRowAtIndexPath(indexPath, animated: true)
            self.currentSelection = nil
            tableView.beginUpdates()
            tableView.endUpdates()
            setupAnimation(cell, hide: true) //Custom animation inside the cell
        
     else 
        self.currentSelection = indexPath
        tableView.beginUpdates()
        tableView.endUpdates()
        setupAnimation(cell, hide: false) //Custom animation inside the cell
    


func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    if let currentSelection = self.currentSelection 
        if indexPath == currentSelection 
            return 80.0
        
    
    return 50.0

这是有效的 - 当我点击该行时高度变为 80.0,当我再次点击它时又回到 50.0。问题是我的分离器没有移动。

它不仅不动,而且当我点击单元格时:

    高度扩大 -> 分接的单元格分隔符保持在同一个位置 -> 上面单元格的分隔符消失了

我做错了什么或者我在这里遗漏了什么?

编辑

我试图覆盖 layoutSubviews 方法并忘记了 - 我没有在其中调用 super.layoutSubviews()。现在所选单元格的分隔符随之向下移动,但我仍然遇到上方单元格的分隔符消失的问题

【问题讨论】:

【参考方案1】:

尝试重新加载该单元格

tableView.beginUpdates()
tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) //try other animations
tableView.endUpdates()

【讨论】:

在 CustomTableViewCell 类中的方法 awakeFromNib 尝试 self.clipsToBounds = true 我太笨了。我试图覆盖布局子视图,但没有在该方法中调用 super。现在所选单元格的分隔符正在向下移动,但我仍然遇到上述单元格的分隔符消失的问题 试过了,对分隔符不下移没有影响,对现有问题也没有 你可以分享截图吗?这将更有利于理解问题。 查看这个帖子***.com/questions/18924589/…【参考方案2】:

如果您不必选择您的单元格,则此线程应该是答案:

UITableView separator line disappears when selecting cells in ios7

【讨论】:

以上是关于UITableViewCell 改变高度的主要内容,如果未能解决你的问题,请参考以下文章

改变 UITableViewCell 高度的自定义动画

动态改变 UITableViewCell 高度 - Swift 4

UITableViewCell 神秘地改变高度

如何在 UITableViewCell 中添加多行文本字段?

如何增加UITableView分隔符高度?

动画 UITableViewCell 高度