在滑动滚动视图上快速移动图像

时间:2014-10-22 15:22:58

标签: ios objective-c uiscrollview pagination uipagecontrol

在下面的代码中点击页面控件时,它会移动到另一个图像,快速移动。

在滚动视图上需要快速移动滑动的相同效果。

-(void)viewDidLoad{
    pageControlBeingUsed = NO;
    pageControl = [[UIPageControl alloc]init];
    scrollView = [[UIScrollView alloc] init];
    scrollView.delegate = self;
    scrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height/1.6);
    scrollView.bounces = true;
    scrollView.showsHorizontalScrollIndicator = false;
    scrollView.showsVerticalScrollIndicator = false;

    NSArray *colors = [NSArray arrayWithObjects:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image1"]], [UIColor colorWithPatternImage:[UIImage imageNamed:@"image2"]],[UIColor colorWithPatternImage:[UIImage imageNamed:@"image3"]],nil];

    for (int i = 0; i < colors.count; i++){
        CGRect frame;
        frame.origin.x = self.scrollView.frame.size.width * i;
        frame.origin.y = 0;
        frame.size = self.scrollView.frame.size;
        UIView *subview = [[UIView alloc] initWithFrame:frame];
        subview.backgroundColor = [colors objectAtIndex:i];
        [self.scrollView addSubview:subview];
    }

    scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * colors.count, self.scrollView.frame.size.height);
    pageControl.frame = CGRectMake(0,self.scrollView.frame.size.height+10, self.view.frame.size.width,30);
    [pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];

    pageControl.currentPage = 0;
    pageControl.numberOfPages = colors.count;        
    [self.view addSubview:pageControl];
    [self.view bringSubviewToFront:pageControl];
    [self.view addSubview:scrollView];
}

- (void)scrollViewDidScroll:(id)sender {

    if (!pageControlBeingUsed) {
        CGFloat pageWidth = self.scrollView.frame.size.width;
        int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
        self.pageControl.currentPage = page;
    }
}

- (void)changePage:(id)sender{
    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage;
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;
    [self.scrollView scrollRectToVisible:frame animated:YES];
    pageControlBeingUsed = YES;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    pageControlBeingUsed = NO;
}

从上面的代码中,当我点击页面控制时触发方法更改页面并移至下一页,当用户在滚动视图上从左向右滑动时需要相同的效果。

@All

1 个答案:

答案 0 :(得分:2)

只需添加scrollView.pagingEnabled = YES;已解决问题。