Определить координаты UITableViewCell при прокрутке - PullRequest
16 голосов
/ 27 марта 2009

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

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

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

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

Ответы [ 4 ]

62 голосов
/ 07 января 2011

Первый шаг - использовать

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

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

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

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

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

Swift 4

// Consider the indexPath at row 1, section 0.
let rectWithinTableView : CGRect = self.tableView.rectForRow(at: IndexPath(row: 1, section: 0))
let rectWithSuperViewCoordinates : CGRect = self.convert(rect: rectWithinTableView, to: self.tableView.superview)
3 голосов
/ 27 марта 2009

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

Неразбериха с рисованием ячеек при прокрутке таблиц сильно пострадает.

2 голосов
/ 06 августа 2009

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

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

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

0 голосов
/ 27 марта 2009

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

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

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

...