向后滚动

时间:2014-01-17 06:45:06

标签: ios objective-c uiscrollview

嗨我在UIScrollview中有10个图像现在我可以向前滚动,如从1到2,3,4等,但在我的项目中,我需要向后滚动图像,如从1到10到左手边 这是我的代码

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

{
 CGFloat pageWidth = cardsScrollView.frame.size.width;
 NSUInteger page = floor((self.cardsScrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    if(page + 1 == [flashCardArry count]){
        for (NSUInteger i = 0; i < [flashCardArry count]; ++i) {
            int nElements = [flashCardArry count] - i;
            int n = (arc4random() % nElements) + i;
            [flashCardArry exchangeObjectAtIndex:i withObjectAtIndex:n];
        }
    [self.cardsScrollView scrollRectToVisible:CGRectMake(self.cardsScrollView.frame.size.width * 0 , 0, self.cardsScrollView.frame.size.width, self.cardsScrollView.frame.size.height)  animated:NO];
    }


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

    CGFloat pageWidth = cardsScrollView.frame.size.width;

NSUInteger page = floor((self.cardsScrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;

2 个答案:

答案 0 :(得分:0)

您可以通过在scrollView上添加10到1的imageViews来实现这一点,然后将滚动视图的contentOffset指向最后一个图像,即图像1。 因此,用户最初无法向右滚动,他可以向左滚动以查看下一张图像。

答案 1 :(得分:0)

因此。如果你想要循环滚动视图,你需要接下来的事情:

1)隐藏scrollView指标

scrl.showsHorizontalScrollIndicator = NO;
scrl.showsVerticalScrollIndicator = NO;

2)在滚动视图的开头添加一个项目,在结尾添加一个项目

   [5'] | [0][1][2][3][4][5] | [0']
        | --- full_size---   |

3)一旦用户滚动到5'项目,我们通过添加full_size

来更新内容偏移

4)一旦用户滚动到0'项目,我们通过减去full_size

来更新内容偏移量
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
   CGPoint contentOffset = scrollView.contentOffset;
   // First item
   if (contentOffset.x < page_size) { // We are now faking last page
      scrollView.contentOffset += full_size; // Jumping to actual last page
   }

   // Last item
   if (contentOffset.x > full_size) { // We are now faking first page
      scrollView.contentOffset -= full_size; // Jumping to actual first page
   }

}

5)为了减少跳跃量(特别是在边框上),你可以从两侧添加更多2个或更多的假物品