UIPageController与UIScrollView的联合使用

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        _backImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height - 20)];
        _backImage.userInteractionEnabled = YES;
        _backImage.image = [UIImage imageNamed:@"教师讲题-互动.png"];
        [self addSubview:_backImage];
        
        _statisScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(7, 9, frame.size.width - 23, frame.size.height - 45)];
        _statisScrollView.contentSize = CGSizeMake(_statisScrollView.frame.size.width * 2, _statisScrollView.frame.size.height);
        _statisScrollView.backgroundColor = [UIColor clearColor];
        _statisScrollView.pagingEnabled = YES;
        _statisScrollView.showsHorizontalScrollIndicator = NO;
        _statisScrollView.delegate = self;
        [self addSubview:_statisScrollView];
        [_statisScrollView release];
        
        _pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, frame.size.height - 40, frame.size.width, 20)];
        _pageControl.backgroundColor = [UIColor clearColor];
        _pageControl.currentPage = 0;
        _pageControl.numberOfPages = 2;
        [_pageControl addTarget:self action:@selector(getChangePage:) forControlEvents:UIControlEventValueChanged];
        [self addSubview:_pageControl];
        [_pageControl release];
       
    }
    return self;
}

- (void)getChangePage:(UIPageControl *)pageControl
{
    int page = pageControl.currentPage;
    
    CGRect frame = _statisScrollView.frame;
    frame.origin.x = frame.size.width * page;//根据页数算要显示的第几页在scrollView的初始坐标
    frame.origin.y = 0;
    [_statisScrollView scrollRectToVisible:frame animated:YES];//根据坐标显示第几页
}
#pragma mark UIScrollViewDelagete
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat pageWidth = scrollView.frame.size.width;
    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;//根据坐标算页数
    _pageControl.currentPage = page;//页数赋值给pageControl的当前页
}
原文地址:https://www.cnblogs.com/leevaboo/p/2848890.html