原文:http://www.cnblogs.com/jiangshiyong/p/3334856.html
ios6 以前subviews是UIImageView ,到了ios7下就变成了UIView
先说下ios7之前 那些点点的实现非常简单 就是UIPageControl.subviews 就是一个个点的UIImageView 所以只需简单的替换掉就好了代码如下:
- (void)updateDots
{
for (int i = 0; i< [self.subviews count]; i++) {
UIImageView* dot =[self.subviews objectAtIndex:i];
if (i == self.currentPage) {
if ([dot respondsToSelector:@selector(setImage:)]) {
dot.image=_activeImage;
}
} else {
if ([dot respondsToSelector:@selector(setImage:)]) {
dot.image=_inactiveImage;
}
}
}
}
- (void)setCurrentPage:(NSInteger)currentPage
{
[super setCurrentPage:currentPage];
if ([[[UIDevice currentDevice]systemVersion]floatValue] <=6.0) {
[self updateDots];
}
// [self updateDots];
[self setNeedsDisplay];
}
- (void)setNumberOfPages:(NSInteger)numberOfPages
{
[super setNumberOfPages:numberOfPages];
if ([[[UIDevice currentDevice]systemVersion]floatValue] <=6.0) {
[self updateDots];
}
// [self updateDots];
[self setNeedsDisplay];
}
-(void)drawRect:(CGRect)iRect
{
if ([kIphoneVersionfloatValue]>=7.0){//加个判断
int i;
CGRect rect;
UIImage *image;
iRect = self.bounds;
if ( self.opaque ) {
[self.backgroundColor set];
UIRectFill( iRect );
}
if ( self.hidesForSinglePage && self.numberOfPages == 1 ) return;
rect.size.height = _activeImage.size.height;
rect.size.width = self.numberOfPages * _activeImage.size.width + ( self.numberOfPages - 1 ) * _kSpacing;
rect.origin.x = floorf( ( iRect.size.width - rect.size.width ) / 2.0 );
rect.origin.y = floorf( ( iRect.size.height - rect.size.height ) / 2.0 );
rect.size.width = _activeImage.size.width;
for ( i = 0; i < self.numberOfPages; ++i ) {
image = i == self.currentPage ? _activeImage : _inactiveImage;
[image drawInRect: rect];
rect.origin.x += _activeImage.size.width + _kSpacing;
}
}else {
}
}