2016-11-26 130 views
0

我有TableViewCell填充数据。例如,我想仅显示一个标签,用户单击后单元格将调整大小并向用户显示所有数据。我完成了调整大小的部分,但是当单元格很小时,它会自动更改我的约束。有人能帮助我吗?代码和下面的照片。UITableViewCell点击后调整大小,约束正在改变

谢谢!

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if (i != indexPath.row) { 
     i = indexPath.row 
    } 
    else { 
     i = -1 
    } 
    tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.automatic) 
} 


func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if (indexPath.row == i) { 
     return 250 
    } 
    else { 
     return 50 
    } 
} 

before user clicks

after user clicks

回答

1

当细胞是在50个的限制高度正在被打破,因为没有足够的空间来容纳所有这些,你希望他们进行布局。因此,单元格的高度在您添加到单元格内的元素之前的任何其他约束条件之前都会被遵守,因此它们会一起挤压。

要消除约束错误,请考虑约束条件下的优先级和关系模式。

最后,当你的细胞被折叠,则可以隐藏所有其他标签除了一个要显示通过调用那些应该被隐藏在下面:

label.hidden = true 

或有生命的消失,就像这样:

UIView.animate(withDuration: 0.2, animations: { 
     label.alpha = 0    
    }, completion: { completed -> Void in 
      label.hidden = true 
}) 

然后做相反的事情,让它们在您展开单元格时重新出现。

+0

非常感谢,我在我的单元格中有一个视图,并有边缘限制..我只是将此视图约束设置为恒定高,现在它的工作... – deniskakacka

相关问题