自定义UIPageControl,可修改任何属性,简单粗暴
来源:互联网 发布:淘宝开放平台api 编辑:程序博客网 时间:2024/06/05 12:49
最近项目开发有需求是用到自定义的UIPageControl,添加自己的图片而不是系统自带单调的白色和灰色小圆点
一开始根据网上很多人说的做法,http://www.cnblogs.com/wengzilin/p/3210331.html的做法,直接导致程序崩溃!!!
原因很简单
-(void) updateDots13 {14 for (int i = 0; i < [self.subviews count]; i++)15 {16 UIImageView* dot = [self.subviews objectAtIndex:i];17 if (i == self.currentPage) dot.image = activeImage;18 else dot.image = inactiveImage;19 }20 }
这个方法里面,继承UIPageControl 的self.subviews并不是UIImageView,而是uiview。。。。
setimage的时候当然会崩溃了。。。
还有就是http://code4app.com/ios/SMPageControl/507e30146803fa2705000000 这个,虽然达到要求并且好像很强大的样子,但这个貌似太复杂了,不好理解,还是果断弃用了
最后是根据某个论坛有人写的代码(找不到网址了)修改得到下面简单而方便又实用的方式:不继承UIPageControl,也不继承UIControl,直接用uiview实现,简单粗暴就是爽!!!:
MyPageControl.h
#import<UIKit/UIKit.h>
@interface MyPageControl :UIView
@property (nonatomic,assign)int numberOfPages;
@property (nonatomic,assign)int currentPage;
@property (nonatomic,assign)float PointSize; //指示图标的长和宽
@property (nonatomic,assign)float distanceOfPoint; //间隔距离
@property (nonatomic,assign)UIColor *currentPagePointColor; //暂时没用
@property (nonatomic,assign)UIColor *pagePointColor; //暂时没用
@property (nonatomic,retain)NSString *inactiveImage; //激活状态图片
@property (nonatomic,retain)NSString *activeImage; //未激活状态图片
-(float)sizeForNumberOfPages:(NSInteger)pages;
-(void)setNumberOfPages:(NSInteger)pages;
-(void)setCurrentPage:(NSInteger)page;
@end
.m
#import"MyPageControl.h"
@implementation MyPageControl
@synthesize currentPage =_currentPage;
@synthesize numberOfPages =_numberOfPages;
- (id)initWithFrame:(CGRect)frame
{
self = [superinitWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
-(float)sizeForNumberOfPages:(NSInteger)pages{
return _distanceOfPoint*(pages+1) +_PointSize*pages;
}
-(void) setNumberOfPages:(NSInteger)pages{
for (int i =0; i < pages; i++) {
UIImageView * pointImageView = [[UIImageViewalloc] initWithFrame:CGRectMake(_distanceOfPoint +(_distanceOfPoint+_PointSize)*i, (self.frame.size.height-_PointSize)/2,_PointSize, _PointSize)];
pointImageView.image=[UIImageimageNamed:self.inactiveImage];
[selfaddSubview:pointImageView];
}
}
- (void) setCurrentPage:(NSInteger)page {
int countOfPages = [self.subviewscount];
for (NSUInteger subviewIndex =0; subviewIndex < countOfPages; subviewIndex++) {
UIImageView* subview = [self.subviewsobjectAtIndex:subviewIndex];
if (subviewIndex == page) {
subview.image = [UIImageimageNamed:self.activeImage];
}else{
subview.image = [UIImageimageNamed:self.inactiveImage];
}
}
}
@end
调用时也特别简单,但要注意的是,设置下面的几个属性的时候,不能调换顺序,具体原因,看程序便懂。。。
MyPageControl *pageControl = [[MyPageControlalloc] initWithFrame:CGRectMake(viewWitdh/3, viewHeight-60, viewWitdh/3, 30)];
pageControl.inactiveImage=@"inactiveImage";
pageControl.activeImage =@"activeImage";
pageControl.PointSize=24;
pageControl.distanceOfPoint=10;
[pageControlsetNumberOfPages:3];
pageControl.currentPage =0;
//以上几个属性不能调换顺序设置,不然有问题
[self.windowaddSubview:pageControl];
这样就可以随便根据inactiveImage和activeImage两个属性改成你想要的两种任意图片了。。。。。
- 自定义UIPageControl,可修改任何属性,简单粗暴
- 自定义UIPageControl的小圆点颜色属性
- MFC无边框可缩放对话框(无需修改任何对话框属性通过资源面板)
- UIPageControl属性
- android —— 自定义控件 最简单下拉刷新,Google最新(可刷新任何控件)
- 修改UIPageControl的点点,可替换任意图片image。
- 自定义UIPageControl
- 自定义UIPageControl
- UIPageControl自定义
- 自定义UIPageControl
- 自定义UIPageControl
- 自定义UIPageControl
- 自定义UIPageControl
- 自定义简单的Toast,可自行修改文字、图片、样式
- 简单粗暴的解释css3中的transform属性
- 修改xib没有效果 看这里 简单粗暴
- Android修改包名的方法,简单粗暴。
- Qt项目名称修改方法(简单粗暴笨方法)
- JSON序列化
- C++类中的对象在内存中的存放方式
- usb键鼠驱动分析
- Aspose Merge Document
- JavaScript 创建类/对象的几种方式
- 自定义UIPageControl,可修改任何属性,简单粗暴
- 可持久化线段树(主席树)
- linux 进程(一)---基本概念
- Java Web入门之用Filter实现用户权限的管理
- javascript遍历对象属性和方法
- 小说爬虫之JAVA代码的实现(附代码)
- 提取视频关键帧和关键帧的时间点信息
- Android 基本布局(2)FrameLayout和RelativeLayout
- 史上最全的ios源码汇总