Пользовательская прокрутка UITableView - PullRequest
5 голосов
/ 06 февраля 2010

Как создать пользовательскую полосу прокрутки для UITableView?

Я хочу удалить стандартное окно, которое появляется при начале отслеживания и исчезает по окончании отслеживания. Вместо этого я хочу, чтобы он был похож на компьютерную программу: (а) он находится на правой стороне экрана и постоянно виден; (б) ручная прокрутка панели будет прокручивать UITableView в соответствующую позицию; (c) прокрутка UITableView будет прокручивать полосу прокрутки надлежащим образом (без отображения по умолчанию, которую предоставляет Apple).

Сложность в (b) и (c) состоит в том, что, насколько мне известно, Apple предоставляет только методы для прокрутки до определенной строки / раздела, но не для прокрутки до трех четвертей пути вниз по строке. Так, например, если я хочу прокрутить полосу прокрутки, UITableView впоследствии будет прокручиваться только до верхней части строки / ячейки. Метод, о котором я говорю, это:

- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

Кто-нибудь ранее реализовывал пользовательскую полосу прокрутки в своем UITableView? Или может кто-нибудь помочь мне найти способ решить следующие проблемы:

  • прокрутка до любой точки в UITableView вместо начала ячейки

  • удаление полосы прокрутки по умолчанию и предотвращение ее появления

  • изменение изображения / анимации полосы прокрутки / чего бы то ни было при прокрутке UITableView

Спасибо!


1 Ответ

2 голосов
/ 06 февраля 2010

UITableView наследуется от UIScrollView, что означает, что вы можете использовать любую из существующих функций. В вашем случае

- (void) setContentOffset: (CGPoint) contentOffset animated: (BOOL) animated

должен сделать работу. Он перемещает стол в любую нужную вам позицию.

Чтобы отключить существующий индикатор прокрутки, используйте

table.showsVerticalScrollIndicator = NO;

А чтобы добавить свой собственный, просто добавьте свой собственный вид!

...