iOS 自定义步骤进度条
新项目要做入驻功能,其中包括一个入住流程,类似登录或者注册流程如下图。
之前想着用自己绘图来做,可是又懒不想多写代码,所以就想着能不能用进度条来做。
1.用进度条做的首先要解决的是进度条的高度问题,可以通过仿射变换来扩大高度。
progressView.transform = CGAffineTransformMakeScale(1.0f,2.0f);
2.用进度条要设置进度progress要与按钮对应
通过步骤的索引来改变进度的值和按钮的图片。由于按钮的左右有间隔所以要注意-1、0和最后一个的progress值。
3.扩展
看有一些类似查公交、车站运行的APP有的可以点击站点,所以就用按钮来做,这样可以扩展。
4.代码
// // StepProgressView.h // CustomProgress // // Created by City--Online on 15/12/12. // Copyright © 2015年 City--Online. All rights reserved. // #import <UIKit/UIKit.h> @interface StepProgressView : UIView @property (nonatomic,assign) NSInteger stepIndex; +(instancetype)progressViewFrame:(CGRect)frame withTitleArray:(NSArray *)titleArray; @end
// // StepProgressView.m // CustomProgress // // Created by City--Online on 15/12/12. // Copyright © 2015年 City--Online. All rights reserved. // #import "StepProgressView.h" ; @interface StepProgressView () @property (nonatomic,strong) UIProgressView *progressView; //用UIButton防止以后有点击事件 @property (nonatomic,strong) NSMutableArray *imgBtnArray; @end @implementation StepProgressView +(instancetype)progressViewFrame:(CGRect)frame withTitleArray:(NSArray *)titleArray { StepProgressView *stepProgressView=[[StepProgressView alloc]initWithFrame:frame]; //进度条 stepProgressView.progressView=[[UIProgressView alloc]initWithFrame:CGRectMake(, , frame.size.width, )]; stepProgressView.progressView.progressViewStyle=UIProgressViewStyleBar; stepProgressView.progressView.transform = CGAffineTransformMakeScale(1.0f,2.0f); stepProgressView.progressView.progressTintColor=[UIColor redColor]; stepProgressView.progressView.trackTintColor=[UIColor blueColor]; stepProgressView.progressView.progress=0.5; [stepProgressView addSubview:stepProgressView.progressView]; stepProgressView.imgBtnArray=[[NSMutableArray alloc]init]; float _btnWidth=frame.size.width/(titleArray.count); ; i<titleArray.count; i++) { //图片按钮 UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom]; [btn setImage:[UIImage imageNamed:@"0.png"] forState:UIControlStateNormal]; [btn setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateSelected]; btn.frame=CGRectMake(_btnWidth/+_btnWidth*i-imgBtnWidth/, , imgBtnWidth, imgBtnWidth); btn.selected=YES; [stepProgressView addSubview:btn]; [stepProgressView.imgBtnArray addObject:btn]; //文字 UILabel *titleLabel=[[UILabel alloc]initWithFrame:CGRectMake(btn.center.x-_btnWidth/, frame.size.height-, _btnWidth, )]; titleLabel.text=[titleArray objectAtIndex:i]; [titleLabel setTextColor:[UIColor blackColor]]; titleLabel.textAlignment=NSTextAlignmentCenter; titleLabel.font=[UIFont systemFontOfSize:]; [stepProgressView addSubview:titleLabel]; } stepProgressView.stepIndex=-; return stepProgressView; } -(void)setStepIndex:(NSInteger)stepIndex { // 默认为-1 小于-1为-1 大于总数为总数 _stepIndex=stepIndex<-?-:stepIndex; _stepIndex=stepIndex >=_imgBtnArray.count-?_imgBtnArray.count-:stepIndex; float _btnWidth=self.bounds.size.width/(_imgBtnArray.count); ; i<_imgBtnArray.count; i++) { UIButton *btn=[_imgBtnArray objectAtIndex:i]; if (i<=_stepIndex) { btn.selected=YES; } else{ btn.selected=NO; } } ) { self.progressView.progress=0.0; } ) { self.progressView.progress=1.0; } else { self.progressView.progress=(0.5+_stepIndex)*_btnWidth/self.frame.size.width; } } @end
5.使用和效果
NSArray *arr=@[@"区宝时尚",@"区宝时尚",@"时尚",@"区宝时尚",@"时尚"]; StepProgressView *stepView=[StepProgressView progressViewFrame:CGRectMake(, , self.view.bounds.size.width, ) withTitleArray:arr]; stepView.stepIndex=; [self.view addSubview:stepView];
补充:上面的代码有一个bug,例如stepIndex=-1时,_stepIndex=并不等-1,原来数组的count返回的是NSUInteger而stepIndex是NSInteger类型,所以需要强制转换一下
stepIndex=stepIndex<-?-:stepIndex; _stepIndex = stepIndex >= (NSInteger)(_imgBtnArray.count-) ? _imgBtnArray.count-:stepIndex;
iOS 自定义步骤进度条的更多相关文章
- Xamarin iOS教程之进度条和滚动视图
Xamarin iOS教程之进度条和滚动视图 Xamarin iOS 进度条 进度条可以看到每一项任务现在的状态.例如在下载的应用程序中有进度条,用户可以很方便的看到当前程序下载了多少,还剩下多少.Q ...
- 自定义环形进度条RoundProgressBar
一.效果图: Canvas画圆环说明: 圆环宽度不必在意,只是画笔宽度设置后达到的效果. 二.实现步骤 1.自定义View-RoundProgressBar 2.设置属性resources(decle ...
- 步骤进度条 css
用css写一个简单的步骤进度条 html代码: <h4>南京游玩</h4> <ul class="step-list"> <li> ...
- Android 自定义水平进度条的圆角进度
有时项目中需要实现水平圆角进度,如下两种,其实很简单 下面开始看代码,先从主界面布局开始看起: <?xml version="1.0" encoding=" ...
- iOS开发:代码通用性以及其规范 第一篇(附带,自定义UITextView\进度条\双表显示\瀑布流 代码设计思路)
在iOS团队开发中,我见过一些人的代码,也修改过他们的代码.有的人的代码写的非常之规范.通用,几乎不用交流,就可以知道如何修改以及在它基础上扩展延生.有的人的代码写的很垃圾,一眼看过去,简直会怀疑自己 ...
- 自定义带进度条的WebView , 增加获取web标题和url 回掉
1.自定义ProgressWebView package com.app.android05; import android.content.Context; import android.graph ...
- 【Android 应用开发】 自定义 圆形进度条 组件
转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...
- ProgressBar学习笔记,自定义横向进度条的样式(包含ActionBar上面的进度条)
点显示进度条后→ android:max="100" 进度条的最大值 android:progress 进度条已经完成的进度值 android:progressDrawab ...
- android新闻项目、饮食助手、下拉刷新、自定义View进度条、ReactNative阅读器等源码
Android精选源码 Android仿照36Kr官方新闻项目课程源码 一个优雅美观的下拉刷新布局,众多样式可选 安卓版本的VegaScroll滚动布局 android物流详情的弹框 健身饮食记录助手 ...
随机推荐
- C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)
第二次更新,后面的代码有问题,有些专辑图片读取不到.发现是PNG图片的问题.在读取的过程中调试发现,图片帧前10个字节包含了图片的格式,在有些歌曲写着JPEG的格式,数据却是PNG的.先说下思路. j ...
- php 命令行脚本运行php文件简单演示
众说周知,php在web服务器领域有着很重要的角色,可是它不仅仅在web领域,只是在web领域表现更为优秀! 它基本有三种用途: web服务端脚本的编写 应用程序图形界面(类似windows自带的计算 ...
- 【Oracle 12c】最新CUUG OCP-071考试题库(54题)
54.(12-15) choose the best answer: View the Exhibit and examine the structure of the ORDER_ITEMS and ...
- IIS7的网站通过https访问提示ssl_error_rx_record_too_long
IIS7的网站通过https访问,提示ssl_error_rx_record_too_long,如下图所示: 解决办法: 一.导入服务器的SSL证书至IIS 1.打开IIS,找到服务器证书 2.导入本 ...
- robot framework学习笔记之三—Scalar变量
一.变量赋值 1)Set赋值 通常使用Set Variable关键字对变量进行赋值,其他Set相关的带Variable的关键字也可以进行赋值 赋值的时候,变量后面写不写『=』都可以,如下: 如果${v ...
- 《快学Scala》第六章 对象 第七章 包和引入
- lucene索引的更新和删除
索引的删除: IndexReader和IndexWriter都由删除索引的功能,但这两者是有区别的, 使用IndexReader删除索引时,索引会马上被删除,其有两种方法,可以删除索引deleteDo ...
- Markdown入门简介
参考 http://sspai.com/25137 作者: Te_Lee 文章来源: 少数派 Markdown入门简介(使用工具Haroopad) 一.使用的工具----haroopad(http:/ ...
- Rabbitmq 消息对列 生产者与消费者的具体实现 springboot
RabbitMQ 基本介绍 RabbitMQ的设计理念是.只要有接收消息的队列. 邮件就会存放到队列里. 直到订阅人取走. . 如果没有可以接收这个消息的消息队列. 默认是抛弃这个消息的.. 我实现的 ...
- 数据结构基础 ---- 数组的理解和实现(Java)
什么是数组 数组是由类型相同的数据元素构成的有序集合,每个元素称为数组元素,每个元素受n(n>= 1)个线性关系的约束,每个元素在n个线性关系中的序号i1, i2, ....., in称该元素的 ...