我怎样才能改变页面点击UIPageControl的点

在这里我有一个页面控制工作良好,但点击点不改变页面,所以请帮助在changepage的function:

- (void)viewDidLoad { scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 420)]; scrollView.delegate = self; [self.scrollView setBackgroundColor:[UIColor whiteColor]]; [scrollView setCanCancelContentTouches:NO]; scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; scrollView.clipsToBounds = YES; scrollView.scrollEnabled = YES; [scrollView setShowsHorizontalScrollIndicator:NO]; scrollView.pagingEnabled = YES; [self.view addSubview:scrollView]; pageControl=[[UIPageControl alloc]initWithFrame:CGRectMake(0, 420, 320, 40)]; [pageControl addTarget:self action:@selector(changepage:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:pageControl]; UIView *blueView = [[UIView alloc] init]; blueView.frame = CGRectMake(0, 0, 640, 480); blueView.backgroundColor = [UIColor whiteColor]; [scrollView addSubview:blueView]; self.pageControl.numberOfPages = 2; [scrollView setContentSize:CGSizeMake(640, 0)]; } -(void)changepage:(id)sender { int page = pageControl.currentPage; if (page < 0) return; if (page >= 2) return; CGRect frame = scrollView.frame; frame.origin.x = frame.size.width * page; frame.origin.y = 0; [scrollView scrollRectToVisible:frame animated:YES]; } - (void)scrollViewDidScroll:(UIScrollView *)_scrollView { if (pageControlIsChangingPage) return; CGFloat pageWidth = _scrollView.frame.size.width; int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; pageControl.currentPage = page; } 

您可以创build一个事件更改页面:

 - (IBAction)changePage:(id)sender { UIPageControl *pager=sender; int page = pager.currentPage; CGRect frame = imageGrid_scrollView.frame; frame.origin.x = frame.size.width * page; frame.origin.y = 0; [imageGrid_scrollView scrollRectToVisible:frame animated:YES]; } 

将其绑定到Pagecontrol的值已更改的事件。

为了完成银行家米塔尔的答案,最简单的方法就是把想要的矩形滚动到可见的位置。 你不必照顾“左”和“右”滚动,因为iOS本身实现了你点击的点,所以你可以滚动到正确的框架:

 private func moveScrollViewToCurrentPage() { //You can use your UICollectionView variable too instead of my scrollview variable self.scrollView .scrollRectToVisible(CGRect( x: Int(self.scrollView.frame.size.width) * self.pager.currentPage, y: 0, width:Int(self.scrollView.frame.size.width), height: Int(self.scrollView.frame.size.height)), animated: true) } 

这是一个UICollectionViewSwift 2解决scheme。 点击UIPageControl's dots您当前的视图向左或向右移动。

 // Define bounds private var currentIndex:Int = 0 private let maxLimit = 25 private let minLimit = 0 // Define @IBAction from UIPageControl @IBAction func moveViewLeftRight(sender: UIPageControl) { // Move to Right if currentIndex < maxLimit && sender.currentPage > currentIndex { currentIndex++ self.collectionView.scrollToItemAtIndexPath(NSIndexPath(forItem: currentIndex, inSection: 0), atScrollPosition: .Right, animated: true) // Move to Left } else if currentIndex > minLimit { currentIndex-- self.collectionView.scrollToItemAtIndexPath(NSIndexPath(forItem: currentIndex, inSection: 0), atScrollPosition: .Left, animated: true) } }