我使用 iCarousel 库在屏幕上滚动许多 UIView。每个视图都会填满整个屏幕。

我需要以某种方式配置 iCarousel,通过短触摸仅滚动一个视图。

我现在有

carousel.scrollSpeed = 0.1;

但要从一个屏幕滚动到另一个屏幕,我需要将手指从屏幕的一侧滑动到另一侧。如果我设置 scrollSpeed 参数设置为更高的值,许多 UIView 会滚动,但我需要配置为每次触摸仅滚动一个 UIView。

有谁能够帮助我?

有帮助吗?

解决方案

最好的选择是禁用轮播本身的滚动,并附加一个 UISwipeGestureRecognizer 来检测用户何时向任一方向滑动,然后在向前滑动时调用 [carousel rollByNumberOfItems:1animated:YES] ,并且 [carouselscrollByNumberOfItems:-1animated :是]如果他们向后滑动。

编辑:

实际上,如果视图填满屏幕,我认为更好的选择是使用我的 SwipeView 库而不是 iCarousel。SwipeView 与 iCarousel 具有相同的界面,但基于 UIScrollView,因此您可以启用分页,将 numberOfItemsPerPage 设置为 1 并使其按照您所描述的方式运行。

https://github.com/nicklockwood/SwipeView

更新:

上述信息已过时。iCarousel 现在通过设置支持单页滑动 pagingEnabled=YES. 。也就是说,如果这是您想要做的事情,SwipeView 可能仍然更合适。

其他提示

实际上,这个代码会做这个技巧。

carousel.decelerationRate = 0.3;
.

卡斯特在轻弹时减速的速率。更高的值意味着减速减速。默认值为0.95。值应在0.0(旋转木马时立即停止)到1.0(旋转木马在不放缓的情况下不足,除非它到达末端)。

您应该尝试0到0.5之间的值。它不会表现得完全像一个滚动视图,但这是你最接近的。参考( https://github.com/nicklockwood/icarousel/issues/94

你可以尝试这样的---

self.iCarosoul.decelerationRate=0.65;
self.iCarosoul.scrollSpeed=3;
self.iCarosoul.stopAtItemBoundary=YES
self.iCarosoul.scrollToItemBoundary=YES;
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top