iPhone开发中UIPageControl实现自定义按钮教程

移动开发 iOS
iPhone开发中UIPageControl实现自定义按钮是本文要介绍的内容,主要讲解的是来实现自定义按钮,有时候UIPageControl需要用到白色的背景,那么会导致上面的点按钮看不见或不清楚,

iPhone开发UIPageControl实现自定义按钮是本文要介绍的内容,主要讲解的是来实现自定义按钮,有时候UIPageControl需要用到白色的背景,那么会导致上面的点按钮看不见或不清楚,我们可以通过继承该类重写函数来更换点按钮的图片现实。

实现思路如下.

新建类继承UIPageControl :

  1.  @interface MyPageControl : UIPageControl   
  2. {   
  3.     UIImage *imagePageStateNormal;   
  4.     UIImage *imagePageStateHighlighted;   
  5. }   
  6. - (id)initWithFrame:(CGRect)frame;   
  7. @property (nonatomic, retain) UIImage *imagePageStateNormal;   
  8. @property (nonatomic, retain) UIImage *imagePageStateHighlighted;   
  9. @end  

声明了初始化该类的函数

用了两个UIImage保存两张图片, 大家知道的, UIPageCotrol的按钮分为两态, 一个是正常, 一个是高亮

接下来实现该类以及重写父类方法:

  1.  @interface MyPageControl(private)  // 声明一个私有方法, 该方法不允许对象直接使用   
  2.  
  3. - (void)updateDots;   
  4. @end   
  5. @implementation MyPageControl  // 实现部分   
  6. @synthesize imagePageStateNormal;   
  7. @synthesize imagePageStateHighlighted;   
  8. - (id)initWithFrame:(CGRect)frame { // 初始化   
  9.     self = [super initWithFrame:frame];   
  10.     return self;   
  11. }   
  12. - (void)setImagePageStateNormal:(UIImage *)image {  // 设置正常状态点按钮的图片   
  13.     [imagePageStateHighlighted release];   
  14.     imagePageStateHighlighted = [image retain];   
  15.     [self updateDots];   
  16. }   
  17. - (void)setImagePageStateHighlighted:(UIImage *)image { // 设置高亮状态点按钮图片   
  18.     [imagePageStateNormal release];   
  19.     imagePageStateNormal = [image retain];   
  20.     [self updateDots];   
  21. }   
  22. - (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { // 点击事件   
  23.     [super endTrackingWithTouch:touch withEvent:event];   
  24.     [self updateDots];   
  25. }   
  26. - (void)updateDots { // 更新显示所有的点按钮   
  27.     if (imagePageStateNormal || imagePageStateHighlighted)   
  28.     {   
  29.         NSArray *subview = self.subviews;  // 获取所有子视图   
  30.         for (NSInteger i = 0; i < [subview count]; i++)   
  31.         {   
  32.             UIImageView *dot = [subview objectAtIndex:i];  // 以下不解释, 看了基本明白   
  33.             dot.image = self.currentPage == i ? imagePageStateNormal : imagePageStateHighlighted;   
  34.         }   
  35.     }   
  36. }   
  37. - (void)dealloc { // 释放内存   
  38.     [imagePageStateNormal release], imagePageStateNormal = nil;   
  39.     [imagePageStateHighlighted release], imagePageStateHighlighted = nil;   
  40.     [super dealloc];   
  41. }   
  42. @end  

OK, 在添加处加入以下来实例化该对象代码:

  1. MyPageControl *pageControl = [[MyPageControl alloc] initWithFrame:CGRectMake(0,0, 200, 30)];   
  2. pageControl.backgroundColor = [UIColor clearColor];   
  3. pageControl.numberOfPages = 5;   
  4. pageControl.currentPage = 0;   
  5. [pageControl setImagePageStateNormal:[UIImage imageNamed:@"pageControlStateNormal.png"]];   
  6. [pageControl setImagePageStateHighlighted:[UIImage imageNamed:@"pageControlStateHighlighted.png"]];   
  7. [self.view addSubview:pageControl];   
  8. [pageControl release];  

小结:UIPageControl实现自定义按钮教程的内容介绍完了,希望通过本文的学习对你能有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-08-11 11:51:07

iPhone键盘

2011-08-18 17:32:55

iPhone开发Table Cell

2011-08-18 09:44:33

iPhone SDK仪表控件UIDialView

2011-08-18 09:52:13

iPhone SDKUIPageContr

2009-06-08 20:13:36

Eclipse自定义控

2024-09-11 14:46:48

C#旋转按钮

2010-04-29 17:14:47

组策略自定义安装

2021-11-23 15:06:42

Kubernetes 运维开源

2012-05-18 10:52:20

TitaniumAndroid模块自定义View模块

2013-12-26 17:08:36

Android开发Android应用自定义Adapter显

2022-10-25 15:12:24

自定义组件鸿蒙

2011-12-26 10:11:08

JSP

2009-06-24 15:13:36

自定义JSF组件

2009-09-07 22:00:15

LINQ自定义

2022-05-18 07:44:13

自定义菜单前端

2012-05-25 12:57:31

Windows Pho

2009-08-05 17:15:27

C#自定义按钮

2011-06-15 09:24:36

Qt Widget Model

2010-07-22 09:25:21

Symbian开发

2013-12-27 14:10:36

Android开发Android应用Transform
点赞
收藏

51CTO技术栈公众号