用于iPhone的UIView的自定义滚动条(使长滚动条不吃力)

Aza Raskin在一篇题为“在iPhone上制作长滚动条不吃力”的帖子中介绍了一种替代的滚动条控件,它更适合在很长的页面上浏览:

滚动条“保留一段时间”来激活它并不重要;我可以简单地沿着iPhone屏幕的右边缘滑动,抓住滚动条手柄。这个想法是,如果我在物理屏幕上将手柄向下拖动3/4,那么我在页面上的位置将向下拖动3/4

t Dropbox iPhone应用程序(顺便说一句,很棒!)正是这种用于长PDF文档的滚动条。常规滚动是通过拖动手柄以外的任何位置来完成的;拖动控制柄可将视图移动到该位置。这似乎是“从头开始”实现的,因为我认为SDK不够灵活,无法定制现有滚动条的行为

然而,Dropbox使用本机文档查看器在iPhone上显示文档,因此他们不知何故添加了滚动条功能。看到滚动条手柄了吗?您可以将其拖动到文档中的其他位置

这个概念与UITableView(即Contacts.app)中索引栏的工作原理非常类似;索引显示为表格右侧的一个条(例如,“a”到“z”),您可以触摸特定标签以跳转到目标部分。然而,在这种情况下,一个很长的页面没有分区,它应该用于通用滚动,而不是跳转到分区

那么,我如何实现这种滚动方法呢?我正在寻找总体思路和具体实施细节。我还对是否存在开源实现感兴趣(这似乎是一个通用问题/解决方案)

总体思路:

我抓起dropbox应用程序(太棒了),玩了一会儿。它看起来像是从照片应用程序中获取了一点,除了支持滚动条之外,它还有条件地在触摸屏上显示半透明的导航栏和工具栏。我很确定他们有一个自定义的视图控制器来拦截触摸并做出相应的反应

一触即发:

  1. 如果是轻触,则显示/隐藏
    导航栏和工具栏

  2. 如果是开着的话
    洗涤器,开始跟踪
    触摸并滚动屏幕
    scrollview/webview(无论它们是什么)
    显示(带有)。我敢肯定
    滚动很简单,就像
    scrollView.contentOffset=
    CGPointMake(0,(scriber.y/[UIScreen mainScreen].bounds.size.height)*
    scrollView.contentSize.height)
    。(三)
  3. 否则,将触摸传递到
    封闭视图

PDF显示可能还有其他隐藏的魔力(我从来没有在cocoa touch中这样做过),但有些东西告诉我这是他们的基本过程

发表评论