0

我有一个 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);

不同的动画效果很好。

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

谢谢。

编辑:屏幕截图

在此处输入图像描述

4

1 回答 1

1

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

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

于 2012-10-12T11:26:14.930 回答