pagecontrol的frame設置時候儘可能用bound,不然會出現不可預料問題數組
pagecontrol的subviews是個view的數組,而不是UIImageView(網上的資料全說是UIImageView,已是以前版本了,能夠log一下看看)dom
@interface DiyPageController : UIPageControl {
UIImage * _imagePageNomal;
UIImage * _imagePageHighlited;
}
- (id)initWithFrame:(CGRect)frame;
@end
@implementation DiyPageController
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
_imagePageNomal = [UIImage imageNamed:@"ADPicSlideIcon"];
_imagePageHighlited = [UIImage imageNamed:@"ADPicSlideIconActive"];
return self;
}
- (void)setCurrentPage:(NSInteger)currentPage {
[super setCurrentPage:currentPage];
[self updateDots];
}
-(void) updateDots {
for (int i = 0; i < [self.subviews count]; i++) {
UIView * dot = [self.subviews objectAtIndex:i];
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(-2, -2, 10, 10)];
// CGSize size;
// size.height = 1; //自定義圓點的大小
// size.width = 1; //自定義圓點的大小,下邊註釋set方法是設置view的frame
// [dot setFrame:CGRectMake(dot.frame.origin.x, dot.frame.origin.y, size.width, size.width)];
imageView.image = (i == self.currentPage) ? _imagePageHighlited : _imagePageNomal;
[dot addSubview:imageView];
}
}
ide
- (void)createPageController{
//實例化頁面管理
_pageController = [[DiyPageController alloc] initWithFrame:CGRectMake(0, 60, self.bounds.size.width, 20)];
// _pageController.center = CGPointMake(ScreenWidth / 2, 60);
//一共有多少頁(滾動循環多了兩張)
_pageController.numberOfPages = 3;
//設置選中頁
_pageController.currentPage = 0;
//設置點擊換頁碼 默認no(切換)
_pageController.defersCurrentPageDisplay = NO;
//設置背景色
// _pageController.backgroundColor = RandomColor;
//給pageControl添加行爲
// [_pageController addTarget:self action:@selector(pageNumberChanged:) forControlEvents:UIControlEventValueChanged];
// [_pageController addTarget:self action:@selector(pageControlContinusScroll:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_pageController];
}
spa
#pragma mark scrollViewDelegate
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
_pageController.currentPage = _scrollView.contentOffset.x / ScreenWidth;
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
_pageController.currentPage = _scrollView.contentOffset.x / ScreenWidth;
}代理
經過設置着兩個代理方法,保證不管是自動滑動仍是手動滑動都將會更新pagecontrol
get