ios - 单击后 UITableViewCell 调整大小,约束发生变化

标签 ios swift uitableview

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

谢谢!

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

最佳答案

当单元格的高度为 50 时,您的约束将被打破,因为没有足够的空间来容纳它们,因为您希望它们被布置。因此,单元格的高度在您添加到单元格内的元素的任何其他约束之前得到遵守,因此它们被挤压在一起。

要消除约束错误,请尝试使用约束的优先级和关系模式。

最后,当您的单元格折叠时,您可以隐藏除您要显示的标签之外的所有其他标签,方法是在应该隐藏的标签上调用以下命令:

label.hidden = true

或者像这样为它们的消失设置动画:

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

当你扩展单元格时,做相反的事情让它们重新出现。

关于ios - 单击后 UITableViewCell 调整大小,约束发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821867/

相关文章:

ios - IOS如何实现wifi captive portal自动登录?

ios - AVAssetWriterInput 附加失败,错误代码为 -11800 AVErrorUnknown -12780

ios - 模拟器的新 Flutter 应用程序构建失败,权限被拒绝

ios - 从 SWRevealViewController 中存在的 tableview 单元格展开 segue

ios - TableView重新加载数据的麻烦

ios - 如何根据最近添加的 subview 更改 View 高度?

ios - Swift alamofire 重构试图返回状态代码

swift - 以编程方式添加负约束

swift - 如何在 Swift 中使用 Alamofire 将参数作为正文发送到 PUT 方法

ios - ScrollView 中的 WKWebView