How can I create a custom scrollbar for a UITableView?
I want to remove the default one that pops up when tracking begins and that disappears when tracking ends. I want, instead, to have one similar to that in a computer program: (a) it’s on the right side of the screen and permanently visible; (b) manually scrolling the bar will scroll the UITableView to the appropriate position; (c) scrolling the UITableView will scroll the scroll bar appropriately (without showing the default one that Apple provides).
The difficulty in (b) and (c) is that, as far as I know, Apple only provides methods to scroll to a particular row/section, but not to scroll to three-fourths of the way down a row. So, for example, if I want to scroll the scroll bar, the UITableView will subsequently only scroll to the top of a row/cell. The method I’m talking about is:
- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
Has anyone implemented a custom scroll bar in their UITableView before? Or can someone help me figure out a way to solve the following problems:
-
scrolling to any point in the UITableView instead of to the start of a cell
-
removing the default scroll bar and preventing it from appearing
-
changing the scroll bar image/animation/whatever as the UITableView is scrolled
Thanks!
UITableView inherits from UIScrollView, that means you can use any of the existing functions. In your case
– (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
should do the job. It moves the table to any position you want.
To disable the existing scroll indicator, use
And to add your own, just add your custom view!