TableViewCells最初在动画tableView约束时的大小错误

时间:2016-02-03 11:00:11

标签: ios swift uitableview autolayout

我有UITableView,其上边缘附加在UIButton的底部。 UITableView的边缘附加到屏幕边缘。

UITableView有一个高度约束,最初设置为0,然后按下UIButton我将高度约束常量设置为所需大小的动画,有效地扩展了{{} 1}}低于UITableView。点击UIButton会再次将常量设置为UIButton折叠并再次隐藏0

我遇到的问题是,UITableView的首次加载/扩展,当单元格出现时,它们似乎不是正确的宽度 - 右端(包括其内容)似乎略微扩大。如果我折叠UITableView然后再次重新展开它,则不会发生错误,因此它似乎只会在第一次加载单元格时发生。

我已尝试使用默认的UITableView类型单元格,以及Nib中的自定义单元格,并且两者都出现问题。

我还尝试在Value1 cell.layoutIfNeeded()之前调用cell.layoutSubviews()return cell,但都没有任何效果。

此问题仅发生在iPhone 6及更高版本上,大概是因为此设备的屏幕略宽。在iPhone 5S及更早版本上,单元首次加载正常。看起来好像电池最初在iPhone 5S上加载并且宽度较低,然后在较大的设备上向外扩展。

问题似乎与更改cellForRowAtIndexPath()的高度约束常量值有关,但我不确定原因。

提前感谢您的帮助。

修改

添加了UITableView代码:

cellForRowAtIndexPath()

1 个答案:

答案 0 :(得分:0)

试试这个

var cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell?

if (cell == nil) {
    cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: ("Cell", forIndexPath: indexPath))
}