本文共 2618 字,大约阅读时间需要 8 分钟。
i开发中UIControl实现按钮是本文要介绍的内容,主要讲解的是来实现自定义按钮,有时候UIPageControl需要用到的,那么会导致上面的点按钮看不见或不清楚,我们可以通过该类重写来更换点按钮的现实 。
实现思路如下.
类继承UIPageControl :
@terface PageControl : UIPageControl { UI *imagePageNormal; UIImage *imagePageStateHighlighted; } - ()tWith:(CGRect)frame; @property (nonatomic, retain) UIImage *imagePageStateNormal; @property (nonatomic, retain) UIImage *imagePageStateHighlighted; @end
了该类的函数
用了两个UIImage保存两张图片, 大家知道的, UIPageCotrol的按钮分为两态, 一个是正常, 一个是高亮
接下来实现该类以及重写父类:
@interface MyPageControl(private) // 声明一个私有方法, 该方法不允许直接使用 - (void)upDots; @end @implenton MyPageControl // 实现部分 @synsize imagePageStateNormal; @synthesize imagePageStateHighlighted; - (id)initWithFrame:(CGRect)frame { // 初始化 self = [super initWithFrame:frame]; return self; } - (void)ImagePageStateNormal:(UIImage *)image { // 正常点按钮的图片 [imagePageStateHighlighted release]; imagePageStateHighlighted = [image retain]; [self updateDots]; } - (void)setImagePageStateHighlighted:(UIImage *)image { // 设置高亮状态点按钮图片 [imagePageStateNormal release]; imagePageStateNormal = [image retain]; [self updateDots]; } - (void)endTrackingWith:(Uouch *)touch Event:(Uvent *)event { // 点击 [super endTrackingWithTouch:touch withEvent:event]; [self updateDots]; } - (void)updateDots { // 显示所有的点按钮 if (imagePageStateNormal || imagePageStateHighlighted) { Nrray *subview = self.subviews; // 获取所有子 for (NSInteger i = 0; i < [subview count]; i++) { UIImage *dot = [subview objectAtIndex:i]; // 以下不解释, 看了基本明白 dot.image = self.currentPage == i ? imagePageStateNormal : imagePageStateHighlighted; } } } - (void)dealloc { // 释放 [imagePageStateNormal release], imagePageStateNormal = nil; [imagePageStateHighlighted release], imagePageStateHighlighted = nil; [super dealloc]; } @end
OK, 在添加处加入以下来化该对象:
MyPageControl *pageControl = [[MyPageControl alloc] initWithFrame:CGRectMake(0,0, 200, 30)]; pageControl.backgroundColor = [UIColor Color]; pageControl.numberOfPages = 5; pageControl.currentPage = 0; [pageControl setImagePageStateNormal:[UIImage imageNamed:@"pageControlStateNormal."]]; [pageControl setImagePageStateHighlighted:[UIImage imageNamed:@"pageControlStateHighlighted.png"]]; [self.view addSubview:pageControl]; [pageControl release];
转载地址:http://akrbi.baihongyu.com/