Iphone UIScrollView,带“;通告";滚动

Iphone UIScrollView,带“;通告";滚动,iphone,ios,cocoa-touch,uiscrollview,uikit,Iphone,Ios,Cocoa Touch,Uiscrollview,Uikit,我试图在UIScrollView中进行“循环”滚动,但没有成功 我想做的是: 如果uiscrollview到达终点,它应该移动到起点 如果uiscrollview处于开始位置并向后移动,则应移动到结束位置 在我的情况下,附加scrollview不是一个好方法(其他方法应该获得“页面id”) 你有什么想法吗?尝试使用以下代码 示例代码.. - (void)scrollViewDidEndDecelerating:(UIScrollView *)sender { if (

我试图在UIScrollView中进行“循环”滚动,但没有成功

我想做的是: 如果uiscrollview到达终点,它应该移动到起点 如果uiscrollview处于开始位置并向后移动,则应移动到结束位置

在我的情况下,附加scrollview不是一个好方法(其他方法应该获得“页面id”)


你有什么想法吗?

尝试使用以下代码

示例代码..

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender 
    {

        if (scrollView.contentOffset.x == 0) {
            // user is scrolling to the left from image 1 to image n(last image).
            // reposition offset to show image 10 that is on the right in the scroll view
            [scrollView scrollRectToVisible:CGRectMake(4000,0,320,480) animated:NO];// you can define your `contensize` for scrollview
        }
        else if (scrollView.contentOffset.x == 4320) {
            // user is scrolling to the right from image n(last image) to image 1.
            // reposition offset to show image 1 that is on the left in the scroll view
            [scrollView scrollRectToVisible:CGRectMake(320,0,320,480) animated:NO];
        }
    }

希望,这将帮助您……

我已经实现了此方法,但它需要启用分页功能。假设您有五个元素
A、B、C、D和E
。设置视图时,将最后一个元素添加到开头,将第一个元素添加到结尾,并调整内容偏移量以查看第一个元素,如下图所示。在UIScrollViewDelegate中,检查用户是否到达任何一端,并将不带动画的偏移移动到另一端

假设[]指示正在显示的视图:

E,A,B,C,[D],E,A
用户右击

E,A,B,C,D,[E],A
E,A,B,C,D,E,[A]
用户右击

E,A,B,C,D,[E],A
E,A,B,C,D,E,[A]
然后,自动将内容偏移设置为第二个元素

E,[A],B,C,D,E,A
这样,用户可以双向滑动,产生无限滚动的错觉

E,A,[B],C,D,E,A

更新 我已经上传了这个算法的完整实现。这是一个非常复杂的类,因为它还有点击选择、无限循环滚动和单元重用。您可以按原样使用代码、修改代码或提取所需的代码。最有趣的代码在类
TCHorizontalSelectorView

享受吧


更新2
UICollectionView
现在是实现这一点的推荐方法,可以使用它获得完全相同的行为。详细介绍了如何实现它。

苹果公司有一个演示,它似乎完全符合您的要求


还有来自WWDC 2011的演示,演示他们的演示它们首先在视频中介绍无限滚动。

参考@redent84,找到代码逻辑

覆盖函数视图将出现(uo动画:Bool)

{
超级。视图将显示(动画)
scrollView.contentSize=CGSize(宽度:scrollView.frame.width*CGFloat(imagesArray.count),高度:scrollView.frame.height)
scrollView.isPaginEnabled=true
//imagesArray.insert(imagesArray.last as?UIImage,位于:0)
//imagesArray.insert(imagesArray.first作为UIImage,位于:imagesArray.count-1)
var testArr=[“A”、“B”、“C”、“D”]
让firstItem=testArr.first
让lastItem=testArr.last
testArr.insert(lastItem为!字符串,位于:0)
testArr.append(第一项为!字符串)
打印(testArr)

对于0中的i..我的滚动视图启用了分页谢谢,这是一个很好的解决方案。我应该使用哪个事件从最后一个元素转到第二个元素?@sMember您可以在
ScrollViewDiEndDecelling
delegate方法中切换。我添加了一个完整的示例,您可以使用它或检查它是如何完成的。很好的解决方案解释得很好:)+1使用滚动查看属性我已经了解你的要求。现在我有搜索,我在我的项目中使用它,我想你想要像左边和右边一个图像和背面还有一个图像,它像一个水平圆一样旋转。上面的代码应该工作,但我不知道为什么它不工作。在访问此url之后。它还包含示例代码>>>。。.具体来说,这段代码是如何解决提问者的问题的?+1很好,但它不适用于分页,至少不适用于开箱即用。我尝试过启用分页,但框架似乎比显示屏大。可能需要一些调整。@Kai这不是真正用于分页的,我不确定OP是否真的需要分页。我知道它已启用,但是无限滚动!=分页。根据他的问题,这听起来更像是一个侧面滚动游戏,而不是一个无限覆盖流。如果它实际上是分页,你可以使用苹果的演示加载
UIPageControl
,当你在实际的索引区域之外时,只需修改代码以使用余数数学。