继承UIPageControl,在.m文件重写setCurrentPage:
- (void) setCurrentPage:(NSInteger)page {
[super setCurrentPage:page];
for (NSUInteger subviewIndex = 0; subviewIndex < [self.subviews count]; subviewIndex++) {
if (subviewIndex == page){
UIImageView* subview = [self.subviews objectAtIndex:subviewIndex];
CGSize size;
size.height = 2;
size.width = 10;
[subview setFrame:CGRectMake(subview.frame.origin.x, subview.frame.origin.y, size.width, size.height)];
} else {
UIImageView* subview = [self.subviews objectAtIndex:subviewIndex];
CGSize size;
size.height = 2;
size.width = 4;
[subview setFrame:CGRectMake(subview.frame.origin.x, subview.frame.origin.y, size.width, size.height)];
}
}
}
在Controller使用:
-(void)initPageControl {
self.pageControl = [[FQBuyCarOrderPageControl alloc]initWithFrame:CGRectMake(0, KHeightScreen -WidthAdaption(80), KWidthScreen, 10)];
self.pageControl.numberOfPages = self.dataArr.count;
self.pageControl.userInteractionEnabled = NO;
[self.pageControl setValue:[UIImage imageNamed:@"buyCarOrder_mainColor"] forKeyPath:@"_currentPageImage"];
[self.pageControl setValue:[UIImage imageNamed:@"buyCarOrder_grayColor"] forKeyPath:@"_pageImage"];
[self.view insertSubview:self.pageControl aboveSubview:self.collectionView];
}
实现PageControl的切换:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat offsetX = scrollView.contentOffset.x;
NSInteger currentPageIndex = self.pageControl.currentPage;
//当前静态 偏移量
CGFloat currentOffset = self.pageControl.currentPage *KWidthScreen;
if ((offsetX -currentOffset) >0) { ///-->向右滑
if ((offsetX -currentOffset) > KWidthScreen/2 && currentPageIndex < (self.pageControl.numberOfPages -1)) {
[self.pageControl setCurrentPage:currentPageIndex +1];
}
} else {
if ((currentOffset -offsetX) > KWidthScreen/2 && currentPageIndex >0) {
[self.pageControl setCurrentPage:currentPageIndex -1];
}
}
}