iPhone開(kāi)發(fā)中UIPageControl實(shí)現(xiàn)自定義按鈕教程
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ò)繼承該類(lèi)重寫(xiě)函數(shù)來(lái)更換點(diǎn)按鈕的圖片現(xiàn)實(shí)。
實(shí)現(xiàn)思路如下.
新建類(lèi)繼承UIPageControl :
- @interface MyPageControl : UIPageControl
- {
- UIImage *imagePageStateNormal;
- UIImage *imagePageStateHighlighted;
- }
- - (id)initWithFrame:(CGRect)frame;
- @property (nonatomic, retain) UIImage *imagePageStateNormal;
- @property (nonatomic, retain) UIImage *imagePageStateHighlighted;
- @end
聲明了初始化該類(lèi)的函數(shù)
用了兩個(gè)UIImage保存兩張圖片, 大家知道的, UIPageCotrol的按鈕分為兩態(tài), 一個(gè)是正常, 一個(gè)是高亮
接下來(lái)實(shí)現(xiàn)該類(lèi)以及重寫(xiě)父類(lèi)方法:
- @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 *)touch withEvent:(UIEvent *)event { // 點(diǎn)擊事件
- [super endTrackingWithTouch:touch withEvent:event];
- [self updateDots];
- }
- - (void)updateDots { // 更新顯示所有的點(diǎn)按鈕
- 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;
- }
- }
- }
- - (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 = [UIColor clearColor];
- pageControl.numberOfPages = 5;
- pageControl.currentPage = 0;
- [pageControl setImagePageStateNormal:[UIImage imageNamed:@"pageControlStateNormal.png"]];
- [pageControl setImagePageStateHighlighted:[UIImage imageNamed:@"pageControlStateHighlighted.png"]];
- [self.view addSubview:pageControl];
- [pageControl release];
小結(jié):UIPageControl實(shí)現(xiàn)自定義按鈕教程的內(nèi)容介紹完了,希望通過(guò)本文的學(xué)習(xí)對(duì)你能有所幫助!