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 交通频道 作文范文 四年级的作文:抢答 剧本:"特"车 书堆 母亲节经典感恩短信 给妈妈个太阳作文250字 学生保证书样本 青春正能量励志语录:越努力,越幸运 非公企业党员教育管理中存在的问题及对策 其实说真的那么一句:我还爱你,依然没变心 快乐守护我 以后结婚了把结婚证烧了好吗,因为离婚需要它.. 令我难忘的一天作文450字 怀念家驹,那一片光辉岁月 风雨平息,阳光普照 茶馆的早晨作文700字 大学毕业实习总结 仙人掌 年少的心太柔软作文1600字 掉泪在雨天里作文700字 信用社竞聘演讲稿 《昆虫记》读后感1000多字 幸福像花儿般悄然绽放 成长故事500字 小学五年级作文900字:我在少先队里成长 与诗人同行作文600字 护士个人年终工作总结 范文 自传作文800字 聪明的老虎作文250字 【人教版语文第四册第二单元作文】学习雷锋好榜样 小学五年级作文500字:骄傲的小山雀 没什么 ...!? 文字构建的屋子,是我今生的庇护 小学五年级作文900字:我的朋友是淑女 小学生零花钱调查报告 励志创业:恒大集团许家印创业史 《麦琪的礼物》读后感400字 青城诀 学习《江泽民文选》和胡锦涛同志讲话精神体会 教育教学工作小结 压岁包规划 楼上楼中间楼下作文600字 Hi,皮皮鲁 妈妈的声音300字 杨旭,算我看错你了 厂党委书记综合治理委员会主任述职报告 接待员工作总结 古诗中的春作文700字 岁月很清晰的划过生命只为了告诉我有伤会疼。 描写交通工具的好段(2) 话端午,忆陈年_初一端午节作文

Copyright © 2016 phpStudy |