#import <Foundation/Foundation.h>
@interface PageControl : UIView//UIPageControl
{
UIImage *imagePageStateNormal;
UIImage *imagePageStateHighlighted;
NSInteger m_numberOfPages;
NSInteger m_currentPage;
}
- (id)initWithFrame:(CGRect)frame;
- (void)UpdateDots;
//- (void)setNumberOfPages:(int)num;
//- (void)setCurrentPage:(NSInteger)pageNum;
@property (nonatomic, retain) UIImage *imagePageStateNormal;
@property (nonatomic, retain) UIImage *imagePageStateHighlighted;
@property (nonatomic) NSInteger m_numberOfPages;
@property (nonatomic) NSInteger m_currentPage;
@end
#import "PageControl.h"
@implementation HomePageControl// 实现部分
@synthesize imagePageStateNormal;
@synthesize imagePageStateHighlighted;
@synthesize m_numberOfPages;
@synthesize m_currentPage;
#define AM_MIN_PAGESIZE 13
//flush the view with the page changing
- (void)setM_currentPage:(NSInteger)pageNum
{
/*
super.currentPage = pageNum;
[self updateDots];
// NSLog(@"setCurrentPage");*/
m_currentPage = pageNum;
[self UpdateDots];
}
- (id)initWithFrame:(CGRect)frame { // 初始化
self = [super initWithFrame:frame];
return self;
}
//numberOfPages
- (void)setM_numberOfPages:(int)num
{
NSArray *subview = self.subviews;// 获取所有子视图
for (NSInteger i = 0; i < [subview count]; i++)
{
UIImageView *dot = [subview objectAtIndex:i];//
if (dot != nil && [dot superview] != nil)
{
[dot removeFromSuperview];
}
}
float posBegin = self.center.x - (num * AM_MIN_PAGESIZE) / 2;
for (int i = 0; i < num; i++)
{
UIImageView * tmpImgView = [[[UIImageView alloc]initWithFrame:
CGRectMake(posBegin + i * AM_MIN_PAGESIZE, 30, 12, 12)] autorelease];
[self addSubview:tmpImgView];
}
[self setM_currentPage:0];
}
- (void)setImagePageStateNormal:(UIImage *)image {// 设置正常状态点按钮的图片
[imagePageStateNormal release];
//NSLog(@"count is %d", [imagePageStateNormal retainCount]);
imagePageStateNormal = [image retain];
//NSLog(@"after count is %d", [imagePageStateNormal retainCount]);
// [self updateDots];
}
- (void)setImagePageStateHighlighted:(UIImage *)image { // 设置高亮状态点按钮图片
[imagePageStateHighlighted release];
imagePageStateHighlighted = [image retain];
// [self updateDots];
}
//响应点击事件
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { // 点击事件
// NSLog(@"touch");
// [super endTrackingWithTouch:touch withEvent:event];
// [self updateDots];
}
- (void)UpdateDots { // 更新显示所有的点按钮
//NSLog(@"update");
if (imagePageStateNormal || imagePageStateHighlighted)
{
NSArray *subview = self.subviews;// 获取所有子视图
for (NSInteger i = 0; i < [subview count]; i++)
{
UIImageView *dot = [subview objectAtIndex:i];//
//NSLog(@"qqqqqq point %d is %f === %f ", i, dot.frame.origin.x, dot.frame.size.width);
dot.image = (m_currentPage == i ? imagePageStateNormal : imagePageStateHighlighted);
//dot.frame = CGRectMake(dot.frame.origin.x, dot.frame.origin.y, dot.image.size.width, dot.image.size.height);
// dot.frame = CGRectMake(posBegin + i * AM_MIN_PAGESIZE, dot.frame.origin.y, dot.image.size.width, dot.image.size.height);
//NSLog(@"point %d is %f ===", i, dot.frame.origin.x);
}
}
}
- (void)dealloc { // 释放内存
[imagePageStateNormal release];
imagePageStateNormal = nil;
[imagePageStateHighlighted release];
imagePageStateHighlighted = nil;
[super dealloc];
}
@end