2009-03-26 2 views
16

Моя цель - включить/выключить UITableViewCells, когда они приближаются к границам UITableView и будут закрыты/обнаружены.Определить координаты UITableViewCell при прокрутке

Подход, который я пытался, - получить координаты UITableViewCell во время события прокрутки. Проблема в том, что каждая ячейка, кажется, равна 0,0. Я попытался преобразовать координаты в родительскую таблицу и просмотреть, но они все равно выходят в 0,0.

В общем, если кто-то знает способ получить координаты или лучший способ угасать UITableViewCells в зависимости от их положения, я был бы очень признателен за любые советы, которые у вас могут быть.

Спасибо за ваше время, Joel

+0

меня тоже, я встретил ту же проблему, даже в UI кадр имеет ширину и высоту, но результат возвращается 0, 0, 0, 0 для x, y, width, height. – RainCast

ответ

60

Первый шаг заключается в использовании

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

, который сообщит CGRect клетки внутри Tableview. Однако это значение не изменяется по мере прокрутки таблицыView. Это позиция относительно первой строки таблицы (а не первой видимой строки). Для того, чтобы получить положение ячейки на экране вы должны преобразовать его в superviews систему координат с помощью

CGRect rect = [tableView convertRect:rectInTableView toView:[tableView superview]];

Так следующая строка делает это все

CGRect rect = [tableView convertRect:[tableView rectForRowAtIndexPath:indexPath] toView:[tableView superview]]; .

+0

Thx все еще работает как шарм! –

+0

Что эквивалентно UICollectionView? –

+0

Это не работает для меня. – Zigglzworth

0

Я подозреваю, что клетки проводятся в «клетки размера» подпанелей в UITableView, так что вы видите кадр относительно этой точки зрения.

У меня нет фактического ответа для вас, но я бы предложил проверить класс делегатов UIScrollView: UIScrollViewDelegate. Он отвечает на – scrollViewDidScroll:, и вы можете вручную выработать свое смещение от этого. UIScrollView является суперклассом UITableView.

Вы можете преобразовать точки (например, ваше происхождение) в координаты другого вида, используя метод UIView - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view.

3

Почему не наложение с частично прозрачным градиентом PNG в UIImageView, которое менее прозрачно сверху и снизу?

Мессинг с рисунком ячейки в прокрутке таблицы будет иметь большой удар производительности.

2

Вы можете позвонить

- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath; 

, чтобы получить прямоугольник любой данной ячейки. Это будет содержать его координаты в структуре начала в rect.

Смежные вопросы