Использование CALayer в UITableViewCell - PullRequest
0 голосов
/ 26 марта 2010

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

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

[myLayer setNeedsDisplay]

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

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

1 Ответ

0 голосов
/ 02 апреля 2010

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

...