如果宽度小于屏幕大小,则UITableViewCell无法正确设置动画

时间:2012-10-11 19:27:27

标签: ios animation uitableview

我有一个UITableViewCell的子类,我想在事件发生时提供一些自定义动画。我一直在努力弄清楚为什么我一直接受相同的动画(我假设UITableViewRowAnimationFade,单元格会消失,下面的单元滑动)我终于决定深入研究这个问题。我发现当我将单元格的大小设置为小于320(或者我假设它与您当前所在的屏幕的大小完全相同)时,它将回退到此默认动画。

我的自定义单元格就像一个浮动框(每个部分有1个单元格,有很多部分),我就这样设置了

self.frame = CGRectMake(5, self.frame.origin.y, 310, self.frame.size.height);
self.contentView.frame = CGRectMake(0, 0, 310, self.frame.size.height);

但我每次都会获得默认动画。如果我将其更改为

self.frame = CGRectMake(5, self.frame.origin.y, 320, self.frame.size.height);
self.contentView.frame = CGRectMake(0, 0, 320, self.frame.size.height);

不同的动画效果很好。

有没有人知道为什么会这样?我想知道它是否打算以这种方式工作,我需要改变我的单元设置方式或是否有解决方法。

感谢。

编辑:屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:1)

使contentView.background颜色清晰,因此单元格本身是完全透明的。然后,您将视图添加到具有背景颜色的contentView中 - 一个带有框架的视图,该框架在左侧和右侧(可能是顶部和底部)对其进行插入。 [我正在做一些几乎完全相同的事情 - 为我的应用程序在商店中的新功能]。让我们将此视图称为containerView(因为它将包含所有其他视图)。您可能想要设置clipsContentsToBounds属性,因此任何子视图都无法“突出”它。

然后,您可以向容器视图添加其他视图。由于我总是回收我的单元格,因此您需要在所有容器子视图上设置标记值,以便您可以轻松找到它们并设置适当的属性(图像,文本,颜色等)。