iOS滑动解锁、滑动获取验证码效果的实现代码


 最近短信服务商要求公司的app在获取短信验证码时加上校验码,目前比较流行的是采用类似滑动解锁的方式,我们公司采取的就是这种方式,设计图如下所示:


这里校验内部的处理逻辑不作介绍,主要分享一下界面效果的实现, 下面贴出代码:

先子类化UISlider

#import <UIKit/UIKit.h>
#define SliderWidth 240
#define SliderHeight 40
#define SliderLabelTextColor [UIColor colorWithRed:193/255.0 green:193/255.0 blue:193/255.0 alpha:1]
#define SliderLabelBorderColor [UIColor colorWithRed:193/255.0 green:193/255.0 blue:193/255.0 alpha:1].CGColor
#define SliderMinimumTrackTintColor [UIColor redColor]
#define SliderLabelFont 14
#define SliderLabelText @"滑动解锁/获取验证码"
#define ThumbImageWidth 40
#define ThumbImageHeight 40
@interface CheckCodeSlider : UISlider
@end
//*******************************************************
#import "CheckCodeSlider.h"
@implementation CheckCodeSlider
//覆写父类UISlider的方法改变滑条frame
- (CGRect)trackRectForBounds:(CGRect)bounds{
return CGRectMake(0, 0, SliderWidth, SliderHeight);
}
@end

再实例化CheckCodeSlider,这里随便在一个ViewController里写的

#import "ViewController.h"
#import "CheckCodeSlider.h"
@interface ViewController (){
UIImageView *imgView;
}
@property (nonatomic ,strong)CheckCodeSlider *slider;
@property (nonatomic ,strong)UILabel *label;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self createSlider];
}
- (void)createSlider{
_slider = [[CheckCodeSlider alloc]initWithFrame:CGRectMake(0, 0, SliderWidth, SliderHeight)];
_slider.center = self.view.center;
_slider.minimumTrackTintColor = [UIColor clearColor];
_slider.maximumTrackTintColor = [UIColor clearColor];
_slider.layer.masksToBounds = YES;
_slider.layer.cornerRadius = SliderHeight/2;
[_slider setThumbImage:[UIImage imageNamed:@"滑块按钮"] forState:UIControlStateNormal];
[_slider addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:_slider];
_label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, SliderWidth, SliderHeight)];
_label.center = self.view.center;
_label.text = SliderLabelText;
_label.font = [UIFont systemFontOfSize:SliderLabelFont];
_label.textAlignment = NSTextAlignmentCenter;
_label.textColor = SliderLabelTextColor;
_label.layer.masksToBounds = YES;
_label.layer.cornerRadius = SliderHeight/2;
_label.layer.borderWidth = 1;
_label.layer.borderColor = SliderLabelBorderColor;
[self.view addSubview:_label];
//这里创建了一个跟滑块相同的imageview覆盖在文字上面,并在sliderValueChanged方法中让其跟着滑块滑动。
imgView = [[UIImageView alloc]initWithFrame:CGRectMake(_slider.frame.origin.x-2, _slider.frame.origin.y-2, ThumbImageWidth+4, ThumbImageHeight+4)];
imgView.image = [UIImage imageNamed:@"滑块按钮"];
[self.view addSubview:imgView];
}
- (void)sliderValueChanged:(UISlider *)slider{
[_slider setValue:slider.value animated:NO];
if (slider.value >0) {
_slider.minimumTrackTintColor = SliderMinimumTrackTintColor;
}else{
_slider.minimumTrackTintColor = [UIColor clearColor];
}
imgView.center = CGPointMake(_slider.frame.origin.x+slider.value*(SliderWidth-ThumbImageWidth)+ThumbImageWidth/2, _slider.frame.origin.y+ThumbImageHeight/2);
if (!slider.isTracking && slider.value != 1) {
[_slider setValue:0 animated:YES];
if (slider.value >0) {
_slider.minimumTrackTintColor = SliderMinimumTrackTintColor;
}else{
_slider.minimumTrackTintColor = [UIColor clearColor];
}
imgView.frame = CGRectMake(_slider.frame.origin.x-2, _slider.frame.origin.y-2, ThumbImageWidth+4, ThumbImageHeight+4);
}
}

这样就可以实现上图中的效果,只需要在sliderValueChanged根据slider的value值做相应处理就行了。

以上所述是小编给大家介绍的iOS滑动解锁、滑动获取验证码效果的实现代码,希望对大家有所帮助!



相关阅读:
Win8.1系统在SSD盘安装双系统提示错误代码0xc0000225的故障原因及解决方法
苹果电脑怎么打开EXE文件?MAC系统上打开exe格式文件方法介绍
javascript闭包的理解
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Win8系统无法识别USB设备的解决方法
Eclipse不自动编译java文件的终极解决方法
PHP限制页面只能在微信自带浏览器访问的代码
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
jQuery的attr与prop使用介绍
Fedora 20 安装试用体验全程讲解
JS实现回到页面顶部动画效果的简单实例
Javascript基础教程之比较null和undefined值
js字符串操作方法实例分析
javascript实现无缝上下滚动特效
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 曼谷留学小记 小学六年级作文450字:老鼠呐喊 感悟幸福的句子 不要让爱你的人失望读后感600字 环境保护倡议书 文明的退潮 卡夫卡的成长故事 我的面试经历 小学五年级作文450字:校园风景 托尔斯泰:三个问题 让你沉思的经典爱情语录 当一切只剩下生存二字,你有什么理由去颓废? 我爱美丽的夏 爱美的凤凰作文600字 这说的多好?!怎么就成误导了呢? 中考心得体会--写给升入初三的同学们 思念逝凶 阳台上那一株青藤 学习要认真作文400字 带春字的诗句大全 小王子读后感700字 县委关于进一步加强和改进人民政协工作的意见 500字一年级作文 小明迷路了 党史课件 党史国史 教育工会主席工作总结 完了,惹祸了 忆乡情 宽容就是扩大自己心胸的容积,虚其怀,类若谷 滕王阁之歌 为了不让六十岁的妈妈担心,我必须撒谎 党支部计算机系党员汇报制度 我的父亲小学生作文600字 入党积极分子个人鉴定 床说,我在夜里等寂寞 政府宣传员述职报告 描写人心情的成语 踏入初中后的第一次秋游作文700字 鸿雁行/仲丽辉 革命就是不请客吃饭 思想汇报的内容 一颗槐树 那一回头的温柔 十一黄金周安全教育材料_事迹材料 2015年三下乡活动总结 对国外政府发展高新技术产业政策的思考 历史教师述职报告 李子勋:井底之蛙的故事 我托明月寄相思 爱她就要成全她

Copyright © 2016 phpStudy |