页面控制 当我滚动图像时当前页面没有改变,但是当我单击页面控制时,它可以正常工作,更改图像也可以滚动精细以上是我的代码帮助我找到我的错误并纠正它
scrollViewImage.delegate = self;
int x=0;
scrollViewImage.pagingEnabled=YES;
NSArray *image=[[NSArray alloc]initWithObjects:@"1.png",@"2.png",@"3.png",@"4.png", nil];
int totalImage = (int)image.count;
for (int i=0; i<image.count; i++)
{
UIImageView *img=[[UIImageView alloc]initWithFrame:CGRectMake(x, 0,[[UIScreen mainScreen] bounds].size.width, 140)];
img.image=[UIImage imageNamed:[image objectAtIndex:i]];
x=x+[[UIScreen mainScreen] bounds].size.width;
[scrollViewImage addSubview:img];
}
scrollViewImage.contentSize=CGSizeMake(x, 115);
scrollViewImage.contentOffset=CGPointMake(0, 0);
// page control
pageController = [[UIPageControl alloc]initWithFrame:CGRectMake(0, 400, 320, 36)];
[pageController addTarget:self action:@selector(pageChanged) forControlEvents:UIControlEventValueChanged];
UIPageControl *pageControl = [UIPageControl appearance];
pageControl.numberOfPages=totalImage;
pageControl.pageIndicatorTintColor = [UIColor whiteColor];
pageControl.currentPageIndicatorTintColor = [UIColor redColor];
pageControl.backgroundColor = [UIColor blackColor];
pageControl.layer.cornerRadius = 7.0;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (IBAction)changePage:(id)sender {
UIPageControl *pager=sender;
int page = pager.currentPage;
CGRect frame = scrollViewImage.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
[scrollViewImage scrollRectToVisible:frame animated:YES];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat viewWidth = scrollViewImage.frame.size.width;
int pageNumber = floor((scrollViewImage.contentOffset.x - viewWidth/2) / viewWidth) +1;
pageController.currentPage = pageNumber;
pageController.currentPageIndicatorTintColor = [UIColor redColor ];
[scrollViewImage setContentOffset: CGPointMake(scrollViewImage.contentOffset.x,0)];
}
- (void)pageChanged {
int pageNumber = pageController.currentPage;
CGRect frame = scrollViewImage.frame;
frame.origin.x = frame.size.width*pageNumber;
frame.origin.y=0;
[scrollViewImage scrollRectToVisible:frame animated:YES];
}
尝试添加下面的方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat pageWidth = self.scrollView.frame.size.width; // you need to have a **iVar** with getter for scrollView
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
NSInteger page = lround(fractionalPage);
self.pageControl.currentPage = page; // you need to have a **iVar** with getter for pageControl
}