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 交通频道 作文范文 梨树镇-密山 兰考-广水 黄陵南-包头 昆山南-天津西 嘉兴南-盘锦 红果-长葛 沧州西-太原南 天门南-溧水 弯道-瓦拉干 张家口南-赤峰 沭阳-聊城 张掖-延安 成都东-郴州西 盘锦-沟帮子 西平-定州 平安驿-乌海 开封-岳阳 长农-彭阳 凤凰城-十里坪 蓬安-进贤 南充-蚌埠 渭南-东胜西 安富镇-茨坝 柳河-凤凰城 麻城-临湘 深圳西-建始 应城-钟祥 张家口南-滦平 荆门-东安东 孝感-深州 孤山-三道营 麻尾-阳春 庐山-金华南 贵定北-溆浦南 镇江南-嘉善南 奎屯-伊宁东 北戴河-镇江 龙岩-涵江 焦作-南陈铺 山海关-兴国 红彦-中和 枣庄西-玉林 霍州东-石家庄 新县-定南 屏边-昆阳 常州-潍坊 重庆北-余姚 长春-大石桥 加南-六合镇 兴宁-茂名 新安-芦沟 禹城-天津 佳木斯-霸州 略阳-银川 贵溪-佳木斯 偃师-白河东 望江-肇东 秦岭-徽县 镇平-杨陵 盐池-淄博 三源浦-瓦房店 信阳-周口 溧阳-漳州 宝鸡-商城 富县-榆林 潮汕-云霄 商都-长春 天镇-临城 永康南-铜仁南 福安-三明北 兰州-汾阳 祥云-姚安 郭家店-嵯岗 万年-余江 友好-兴莲 新友谊-太平镇 淮南东-余姚北 齐齐哈尔-翠峰 新余-北京 哈尔滨东-金山屯 谁最近坐过泉州到杭州的大巴进来一下
湖州到深圳怎么走好走
厦门到长汀几公里要高速公路
泉州到石城的车在那个站新车站还是客运中心站发车地点在
沈阳 从三好街到北行怎么走最快最方便
你好 我是07年2月在河南濮阳办理的c1驾驶证,请问能否转到聊
从渭南列车火车站怎么去渭南市西三路
南宁列车火车站到明园新都酒店怎么走
怎样从晋江永和坐车到泉州财贸干校
宜昌到襄樊?_宜昌到襄樊?
苏州南站去嘉兴北站的车次情况
如果要和男友去温州乐园玩,大概消费要多少,从温州码头出发
从武汉坐飞机到贵阳,机票有打折吗
怀化到温州开车怎么坐车 要多久
在中山坦洲坐什么车可以回四川达州,或者重庆?
职教中心到桐乡逾桥路怎么坐车
邮政真不方便,14号都寄出了..还没到
从塘沽到曲阜怎么坐车
去潮阳实验学校公车路线
宜兴到邵兴要怎么走,时间大概要多久车费大概是多少啊
请问在广州东站下车后,怎么到白云区啊
广州到顺昌做列车火车要多少钱
济宁到沂水的列车火车票价
怎么在网上购买火车列车票
在石家庄列车火车站可以买济南到临沂的车票吗
我是绍兴的 要寄300多公斤的东西到福建泉州市安溪县城厢镇 有
新昌到上海车费要多少 路线是直达吧
从铁岭开车去沈阳南塔怎么走啊 最好是不走高速 谢谢
年初一有车从广州回雷州吗票价多少钱
陕西咸阳到北师大珠海分校怎么走?

Copyright © 2016 phpStudy |