UIScrollView与分页+显示上一页/后一页的一部分

时间:2011-04-11 08:41:12

标签: ios iphone objective-c uiscrollview programmatically-created

我正在尝试创建一种“游戏模式”菜单,类似于“Cut the Rope”游戏中用来选择级别包的菜单:

Cut the Rope menu

我特别想要的是达到显示“当前项目”(在这种情况下,“2. Fabric Box”项目)加上一些前一项和后一项的相同效果(以确保用户知道滚动有更多模式可用,启用分页(使滚动视图自动“居中”在这些项目上)。

对于启用了分页的UIScrollView来说,这似乎是一项自然的工作,但是从文档中可以看出分页在视图边界的倍数上发生。

所以:如果在视图边界的倍数上发生分页,有没有办法用UIScrollView实现这种效果?

我们看到屏幕的整个宽度这一事实表明UIScrollView框架的宽度在这种情况下将是320px,但是每个单独的项目需要小于那个以便显示前一个和下一个项目,从而弄乱了分页...

1 个答案:

答案 0 :(得分:44)

供您参考,您可以从此处查看页面控件的示例实现。 https://developer.apple.com/library/content/samplecode/PageControl/Introduction/Intro.html

对于您想要的实施, 令你惊讶的是,scrollview的宽度实际上小于320(或480)。要设置的神奇属性是:

scrollView.clipsToBounds = NO

此实现的唯一问题是,如果触摸超出scrollView的范围,则scrollview不会触摸事件。这可以通过将其父hitTest事件传递给scrollView来解决。

只是链接到更好的解释: UIScrollView horizontal paging like Mobile Safari tabs

与我推荐的略有不同,但做同样的事情。

修改

我有一个名为LXPagingViews的小项目,可以完成上述工作,希望以开箱即用的方式(请给我一个拉取请求或问题反馈):https://github.com/lxcid/LXPagingViews