我正在尝试创建一种“游戏模式”菜单,类似于“Cut the Rope”游戏中用来选择级别包的菜单:
我特别想要的是达到显示“当前项目”(在这种情况下,“2. Fabric Box”项目)加上一些前一项和后一项的相同效果(以确保用户知道滚动有更多模式可用,启用分页(使滚动视图自动“居中”在这些项目上)。
对于启用了分页的UIScrollView来说,这似乎是一项自然的工作,但是从文档中可以看出分页在视图边界的倍数上发生。
所以:如果在视图边界的倍数上发生分页,有没有办法用UIScrollView实现这种效果?
我们看到屏幕的整个宽度这一事实表明UIScrollView框架的宽度在这种情况下将是320px,但是每个单独的项目需要小于那个以便显示前一个和下一个项目,从而弄乱了分页...
答案 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