现在的位置: 首页 > 综合 > 正文

自义定UIPageControl

2012年09月03日 ⁄ 综合 ⁄ 共 2303字 ⁄ 字号 评论关闭
@interface ZHPageControl : UIPageControl{
    
    UIImage *imagePageStateNormal;
    UIImage *imagePageStateHighlighted;
}

-
(id)initWithFrame:(CGRect)frame;
@property (nonatomic, retain) UIImage *imagePageStateNormal;
@property (nonatomic, retain) UIImage *imagePageStateHighlighted;
@end
#import "ZHPageControl.h"

/**
 *    @brief     声明一个私有方法, 该方法不允许对象直接使用
 *
 *    @param     private     <#private description#>
 *
 *    @return    <#return value description#>
 */
@interface ZHPageControl(private)
-(void)updateDots;
@end
@implementation ZHPageControl
@synthesize imagePageStateNormal;
@synthesize imagePageStateHighlighted;

/**
 *    @brief    初始化
 *
 *    @param     frame     <#frame description#>
 *
 *    @return    <#return value description#>
 */
- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    return self;
}

/**
 *    @brief    设置正常状态点按钮的图片
 *
 *    @param     image     <#image description#>
 */
- (void)setImagePageStateNormal:(UIImage *)image {
    [imagePageStateNormal release];
    imagePageStateNormal = [image retain];
    [self updateDots];
}


/**
 *    @brief    设置高亮状态点按钮图片
 *
 *    @param     image     <#image description#>
 */
- (void)setImagePageStateHighlighted:(UIImage *)image { 
    [imagePageStateHighlighted release];
    imagePageStateHighlighted = [image retain];
    [self updateDots];
}


/**
 *    @brief    重写 setCurrentPage方法
 *
 *    @param     currentPage     当前页
 */
- (void)setCurrentPage:(NSInteger)currentPage
{
    [super setCurrentPage:currentPage];
    [self updateDots];
}

/**
 *    @brief    更新显示所有的点按钮
 */
- (void)updateDots {
    if (imagePageStateNormal || imagePageStateHighlighted)
    {
        
        NSArray *subview = self.subviews;  // 获取所有子视图
        
        for (NSInteger i = 0; i < [subview count]; i++)
        {
            
        
        
            UIImageView *dot = [subview objectAtIndex:i];  // 以下不解释, 看了基本明白
            
            dot.image = self.currentPage == i ? imagePageStateNormal : imagePageStateHighlighted;
            
        }
    }
}

/**
 *    @brief     点击事件
 *
 *    @param     touch     <#touch description#>
 *    @param     event     <#event description#>
 */
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
    [super endTrackingWithTouch:touch withEvent:event];
    
    [self updateDots];
    
}


/**
 *    @brief    释放内存
 */
- (void)dealloc {
    [imagePageStateNormal release], imagePageStateNormal = nil;
    [imagePageStateHighlighted release], imagePageStateHighlighted = nil;
    [super dealloc];
}

/**
 *    @brief    覆盖的drawRect:执行自定义绘制。
 *
 *    @param     rect     <#rect description#>
 */
- (void)drawRect:(CGRect)rect
{
    int count = [self.subviews count];
    int width=44;//自定义图标宽
    int height=44;//自定义图标高
    for (int i = 0; i < count; i++) {
        UIImageView* dot = [self.subviews objectAtIndex:i];
        [dot setFrame:CGRectMake(i*width, 0, width, height)];
        if (i == 0) {
            [dot setImage:imagePageStateHighlighted];
        }else {
            [dot setImage:imagePageStateNormal];
        }
    }
}

@end

 

抱歉!评论已关闭.