5

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

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

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

[tableView beginUpdates];
[tableView endUpdates];

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

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

4

3 回答 3

1

只是

1)直接更改子视图高度,无需动画,

2)设置单元格的新cellHeight heightForRowAtIndexPath

3)用动画更新表格。如果这样做,子视图和单元格都将正确动画。

于 2013-07-09T11:24:10.430 回答
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根据您的需要进行调整。

希望这会帮助你。

于 2013-07-09T11:48:11.870 回答
0

您应该在 1 个动画功能中制作动画。当您收到新的高度开始动画时(您可以使用图层转换)

于 2013-07-09T06:49:20.270 回答