32

我正在尝试创建一种类似于“割绳子”游戏用来选择关卡包的“游戏模式”菜单:

剪绳子菜单

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

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

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

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

4

1 回答 1

46

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

对于您想要的实现,令您惊讶的是,滚动视图的宽度实际上小于 320(或 480)。要设置的魔法属性是:

scrollView.clipsToBounds = NO

此实现的唯一问题是,如果触摸超出了滚动视图的边界,则滚动视图不会获得任何触摸事件。这可以通过将其父 hitTest 事件传递给 scrollView 来解决。

只是为了链接到更好的解释: UIScrollView Horizo​​ntal paging like Mobile Safari tabs

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

编辑:

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

于 2011-04-11T08:54:51.170 回答