我有一个自定义单元格,里面有一个子视图,一旦响应到来,从服务器获取内容的高度会增加。
所以我用动画增加了这个子视图的高度,在完成动画后,我向viewController发送了一个委托消息。
在这个委托中,我设置了一个实例变量,其中包含单元格高度的新值,并调用
[tableView beginUpdates];
[tableView endUpdates];
之后,只需使用平滑动画调整新高度的单元格。 但是因为这个委托方法是在前一个动画的完成块中调用的,所以它发生在它之后。
有没有办法让他们两个顺利地一起发生?
答案 0 :(得分:1)
只是
1)直接改变子视图高度而不用动画,
2)在heightForRowAtIndexPath
,
和
3)用动画更新表格。如果这样做,子视图和单元格都将正确动画。
答案 1 :(得分:1)
使用NSLayoutConstraint
..这样当单元格自动更改其高度和宽度时,其子视图也会更改其高度和宽度。
NSLayoutConstraint *myConstraint1 = [NSLayoutConstraint constraintWithItem:cell
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:subView
attribute:NSLayoutAttributeWidth
multiplier:1.0
constant:-5];
NSLayoutConstraint *myConstraint2 = [NSLayoutConstraint constraintWithItem:cell
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:subView
attribute:NSLayoutAttributeHeight
multiplier:1.0
constant:-5];
[cell addConstraint:myConstraint1];
[cell addConstraint:myConstraint2];
根据您的需要调整constant
。
希望这会对你有所帮助。
答案 2 :(得分:0)
你应该在1个动画功能中制作动画。 当您收到新的高度开始动画(您可以使用图层转换)