如何用动画同时增加单元格高度和子视图高度?

时间:2013-07-09 06:31:08

标签: ios objective-c uitableview

我有一个自定义单元格,里面有一个子视图,一旦响应到来,从服务器获取内容的高度会增加。

所以我用动画增加了这个子视图的高度,在完成动画后,我向viewController发送了一个委托消息。

在这个委托中,我设置了一个实例变量,其中包含单元格高度的新值,并调用

[tableView beginUpdates];
[tableView endUpdates];

之后,只需使用平滑动画调整新高度的单元格。 但是因为这个委托方法是在前一个动画的完成块中调用的,所以它发生在它之后。

有没有办法让他们两个顺利地一起发生?

3 个答案:

答案 0 :(得分:1)

只是

1)直接改变子视图高度而不用动画,

2)在heightForRowAtIndexPath

中设置单元格的新cellHeight

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个动画功能中制作动画。 当您收到新的高度开始动画(您可以使用图层转换)