在UITableViewCell中使用CALayer

时间:2010-03-26 19:13:21

标签: iphone uitableview uikit calayer core-graphics

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

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

[myLayer setNeedsDisplay]

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

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

1 个答案:

答案 0 :(得分:0)

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