2010-03-26 3 views
0

В каждой ячейке моего представления таблицы я хочу иметь панель, которую пользователь может выдвинуть справа. На баре я планирую иметь значки. Итак, для этого я подклассифицировал UITableViewCell. В ячейке я реализовал drawRect, и там я уже нарисовал градиент и цвет фона в ячейке. Оттуда я могу создать CALayer, дать ему цвет фона & и добавить его в качестве подслоя в массив subLayers Views. Я могу сделать все это, и он отобразит мой слой на каждом UITableViewCell.Использование CALayer в UITableViewCell

Я добавил события касания к ячейке, чтобы я мог обнаружить, когда пользователь касается ячейки и для тестирования. Я сделал это, когда пользователь промахнулся, мой CALayer расширился. Но проблема в том, что когда UITableView прокручивает и повторно использует ячейку, CALayer которой расширен, она не воссоздает CALayer. Я попытался

[myLayer setNeedsDisplay] 

и использовал drawLayer: метод InContext своего делегата и не дозвонился. Я также попытался рассказать о вызове setNeedsDisplay в ячейке моего UITableViewController, надеясь, что это вызовет перерисовку, но это не сработает.

Я не уверен, что мне не хватает. Я новичок в CoreGraphics & CoreAnimation. Я прочитал руководство CoreAnimation Developers Guide, но я предполагаю, что я что-то упустил. Любая помощь будет большой.

ответ

0

Я добавил закрытое преобразование и открытое преобразование в CALayer. В контроллере scrollViewWillBeginDragging контроллера табличного представления я перебираю все видимые ячейки и вызываю применить свое закрытое преобразование для сброса меню.