【问题标题】:Quick movement change of image on swipe scrollview滑动滚动视图上图像的快速移动变化
【发布时间】:2014-10-22 15:22:58
【问题描述】:

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

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

-(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;
}

从上面的代码中,当我点击 pageControl 时,它会触发 changePage 方法并移动到下一页,当用户在滚动视图上从左到右从右到左滑动时需要相同的效果。

@全部

【问题讨论】:

    标签: ios objective-c uiscrollview pagination uipagecontrol


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多