iPhone開(kāi)發(fā)中UIPageControl實(shí)現(xiàn)自定義按鈕是本文要介紹的內(nèi)容,主要講解的是來(lái)實(shí)現(xiàn)自定義按鈕挟裂,有時(shí)候UIPageControl需要用到白色的背景践剂,那么會(huì)導(dǎo)致上面的點(diǎn)按鈕看不見(jiàn)或不清楚越败,我們可以通過(guò)繼承該類重寫函數(shù)來(lái)更換點(diǎn)按鈕的圖片現(xiàn)實(shí)? 驱显。
實(shí)現(xiàn)思路如下.
新建類繼承UIPageControl :
@interfaceMyPageControl?:?UIPageControl
{
UIImage?*imagePageStateHighlighted;
}
-?(id)initWithFrame:(CGRect)frame;
@property?(nonatomic,?retain)?UIImage?*imagePageStateNormal;
@property?(nonatomic,?retain)?UIImage?*imagePageStateHighlighted;
@end
用了兩個(gè)UIImage保存兩張圖片, 大家知道的, UIPageCotrol的按鈕分為兩態(tài), 一個(gè)是正常, 一個(gè)是高亮
接下來(lái)實(shí)現(xiàn)該類以及重寫父類方法:
@interface?MyPageControl(private)??//?聲明一個(gè)私有方法,?該方法不允許對(duì)象直接使用
-?(void)updateDots;
@end
@implementation?MyPageControl??//?實(shí)現(xiàn)部分
@synthesize?imagePageStateNormal;
@synthesize?imagePageStateHighlighted;
-?(id)initWithFrame:(CGRect)frame?{?//?初始化
self=?[super?initWithFrame:frame];
return?self;
}
-?(void)setImagePageStateNormal:(UIImage?*)image?{??//設(shè)置正常狀態(tài)點(diǎn)按鈕的圖片
[imagePageStateHighlighted?release];
imagePageStateHighlighted=?[image?retain];
[self?updateDots];
}
-?(void)setImagePageStateHighlighted:(UIImage?*)image?{?//?設(shè)置高亮狀態(tài)點(diǎn)按鈕圖片
[imagePageStateNormal?release];
imagePageStateNormal=?[image?retain];
[self?updateDots];
}
-?(void)endTrackingWithTouch:(UITouch?*)touchwithEvent:(UIEvent?*)event?{?//?點(diǎn)擊事件
[super?endTrackingWithTouch:touch?withEvent:event];
[self?updateDots];
}
-?(void)updateDots?{?//更新顯示所有的點(diǎn)按鈕
if?(imagePageStateNormal?||?imagePageStateHighlighted)
{
NSArray?*subview=self.subviews;??//?獲取所有子視圖
for?(NSIntegeri=0;?i<[subview?count];?i++)
{
UIImageView*dot=?[subview?objectAtIndex:i];??//?以下不解釋,?看了基本明白
dot.image=self.currentPage==?i???imagePageStateNormal?:?imagePageStateHighlighted;
}
}
}
-?(void)dealloc?{?//?釋放內(nèi)存
[imagePageStateNormal?release],imagePageStateNormal=nil;
[imagePageStateHighlighted?release],imagePageStateHighlighted=nil;
[super?dealloc];
}
@end
OK, 在添加處加入以下來(lái)實(shí)例化該對(duì)象代碼:
MyPageControl?*pageControl=?[[MyPageControl?alloc]?initWithFrame:CGRectMake(0,0,?200,?30)];
pageControl.backgroundColor=?[UIColorclearColor];
pageControl.numberOfPages=5;
pageControl.currentPage=0;
[pageControl?setImagePageStateNormal:[UIImage?imageNamed:@"pageControlStateNormal.png"]];
[pageControl?setImagePageStateHighlighted:[UIImage?imageNamed:@"pageControlStateHighlighted.png"]];
[self.view?addSubview:pageControl];
[pageControl?release];
原文地址:http://blog.csdn.net/scy411082514/article/details/7689624