0

在我的表格视图的每个单元格上,我希望有一个用户可以从右侧滑出的栏。在栏上我计划有图标。所以,为了做到这一点,我将 UITableViewCell 子类化了。在单元格上我已经实现了 drawRect 并且在那里我已经在单元格上绘制了渐变和背景颜色。从那里,我可以创建一个 CALayer,给它一个框架和背景颜色,并将它作为一个子层添加到 Views subLayers 数组中。我可以做到这一切,它会在每个 UITableViewCell 上显示我的图层。

我已经向单元格添加了触摸事件,因此我可以检测用户何时触摸单元格并进行测试,因此当用户滑动时,我的 CALayer 会变宽。但问题是,当 UITableView 滚动并重用 CALayer 已加宽的单元格时,它不会重新创建 CALayer。我试过了

[myLayer setNeedsDisplay]

并使用了它的委托的 drawLayer:inContext 方法,它没有被调用。我还尝试在 UITableViewController 的单元格上调用 setNeedsDisplay,希望这会导致重绘,但它不起作用。

我不确定我错过了什么。我是 CoreGraphics 和 CoreAnimation 的新手。我已经阅读了 CoreAnimation 开发人员指南,但我假设我遗漏了一些东西。任何帮助都会很棒。

4

1 回答 1

0

我向 CALayer 添加了一个封闭式变换和开放式变换。在表视图控制器的 scrollViewWillBeginDragging 中,我遍历所有可见单元格并调用应用我的关闭变换来重置菜单。

于 2010-04-02T12:21:45.233 回答