自己写的程序密码功能 ------数字功能
自己写的程序密码功能 ------数字功能
class LockedViewController: UIViewController {
var dataBase:FMDatabase?
var i = 0
var passwordStr : String?
var tempStr : String = ""
var numStr : String = "" //初始输入密码
var reNumStr : String = "" //再次输入密码
var everyStr : String = "" //密码设置成功后,从数据库查询的密码放在这
var titleLabel : UILabel!
var pasLabel : UILabel!
var baclBtn : UIButton! //返回上一页按钮
var changeBtn : UIButton! //点击进入修改程序密码界面
var global : Bool = Bool()
var one : String = ""
var two : String = ""
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.whiteColor()
creatConfig()
// Do any additional setup after loading the view.
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.title = "程序密码"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func creatConfig() {
titleLabel = creatLabel(CGRectMake(20, 70, SCREEN_WIDTH-40, 20), text: "请输入密码", textColor: UIColor.blackColor(), textFont: 15, textAlignment: NSTextAlignment.Center)
pasLabel = creatLabel(CGRectMake(20, 100, SCREEN_WIDTH-40, 20), text: "_ _ _ _ _ _", textColor: UIColor.blackColor(), textFont: 15, textAlignment: NSTextAlignment.Center)
// baclBtn = creatBtn(CGRectMake(10, SCREEN_HEIGHT - 80, 60, 30), text: "返回", textColorNor: UIColor.blackColor(), textColorHig: UIColor.blackColor(), textFont: 15, imageNor: "", imageHig: "", btnTag: 101, target: "Back")
changeBtn = creatBtn(CGRectMake(SCREEN_WIDTH - 120, SCREEN_HEIGHT - 80, 100, 30), text: "修改密码", textColorNor: UIColor.blackColor(), textColorHig: UIColor.blackColor(), textFont: 15, imageNor: "", imageHig: "", btnTag: 102, target: "Change:")
let radius : CGFloat = 75
let x = SCREEN_WIDTH
let hei : CGFloat = 80
let kx = (x-radius*3)/4
creatBtn(CGRectMake(kx, 150, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-1", imageHig: "", btnTag: 1+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx*2+radius, 150, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-2", imageHig: "", btnTag: 2+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx*3+radius*2, 150, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-3", imageHig: "", btnTag: 3+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx, 150+hei, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-4", imageHig: "", btnTag: 4+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx*2+radius, 150+hei, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-5", imageHig: "", btnTag: 5+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx*3+radius*2, 150+hei, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-6", imageHig: "", btnTag: 6+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx, 150+hei*2, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-7", imageHig: "", btnTag: 7+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx*2+radius, 150+hei*2, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-8", imageHig: "", btnTag: 8+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx*3+radius*2, 150+hei*2, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-9", imageHig: "", btnTag: 9+1234, target: Selector("clickBtnToTurn:"))
creatBtn(CGRectMake(kx*2+radius, 150+hei*3, radius, radius), text: "", textColorNor: UIColor.clearColor(), textColorHig: UIColor.clearColor(), textFont: 15, imageNor: "数字-0", imageHig: "", btnTag: 0+1234, target: Selector("clickBtnToTurn:"))
// creatBtn(CGRectMake(kx*3+radius*2, 150+hei*3, radius, radius), text: "", textColorNor: UIColor.whiteColor(), textColorHig: UIColor.blackColor(), textFont: 15, imageNor: "删除", imageHig: "", btnTag: 0+1235, target: "delegateBtn:")
}
func clickBtnToTurn(sender:UIButton) {
if i != 3 {
let zero : String = "0"
var one : String = "1"
var two : String = "2"
let three : String = "3"
let four : String = "4"
let five : String = "5"
let six : String = "6"
let seven : String = "7"
let eight : String = "8"
let nine : String = "9"
switch sender.tag-1234 {
case 0:
tempStr = tempStr + zero
print("tempStr :\(tempStr)")
if (tempStr as NSString).length <= 6 {
numStr = numStr + zero
}else{
reNumStr = reNumStr + zero
}
case 1:
tempStr = tempStr + one
if (tempStr as NSString).length <= 6 {
numStr = numStr + one
}else{
reNumStr = reNumStr + one
}
case 2:
tempStr = tempStr + two
if (tempStr as NSString).length <= 6 {
numStr = numStr + two
}else{
reNumStr = reNumStr + two
}
case 3:
tempStr = tempStr + three
if (tempStr as NSString).length <= 6 {
numStr = numStr + three
}else{
reNumStr = reNumStr + three
}
case 4:
tempStr = tempStr + four
if (tempStr as NSString).length <= 6 {
numStr = numStr + four
}else{
reNumStr = reNumStr + four
}
case 5:
tempStr = tempStr + five
if (tempStr as NSString).length <= 6 {
numStr = numStr + five
}else{
reNumStr = reNumStr + five
}
case 6:
tempStr = tempStr + six
if (tempStr as NSString).length <= 6 {
numStr = numStr + six
}else{
reNumStr = reNumStr + six
}
case 7:
tempStr = tempStr + seven
if (tempStr as NSString).length <= 6 {
numStr = numStr + seven
}else{
reNumStr = reNumStr + seven
}
case 8:
tempStr = tempStr + eight
if (tempStr as NSString).length <= 6 {
numStr = numStr + eight
}else{
reNumStr = reNumStr + eight
}
case 9:
tempStr = tempStr + nine
if (tempStr as NSString).length <= 6 {
numStr = numStr + nine
}else{
reNumStr = reNumStr + nine
}
default:
break
}
//查询数据
let arr : Array<PasswordReco> = PasswordManager.shareInstance().selectDriveRecos()
for element : PasswordReco in arr {
everyStr = element.passwordStr
print("element.passwordStr:\(element.passwordStr)")
}
print("first:\(everyStr)")
if everyStr == "" {
if (tempStr as NSString).length <= 6 {
if (numStr as NSString).length == 0 {
pasLabel.text = "_ _ _ _ _ _"
}else if (numStr as NSString).length == 1 {
pasLabel.text = "* _ _ _ _ _"
}else if (numStr as NSString).length == 2 {
pasLabel.text = "* * _ _ _ _"
}else if (numStr as NSString).length == 3 {
pasLabel.text = "* * * _ _ _"
}else if (numStr as NSString).length == 4 {
pasLabel.text = "* * * * _ _"
}else if (numStr as NSString).length == 5 {
pasLabel.text = "* * * * * _"
}else if (numStr as NSString).length == 6 {
pasLabel.text = "* * * * * *"
}
}
if (numStr as NSString).length == 6 {
if (reNumStr as NSString).length == 0 {
titleLabel.text = "请再次输入密码"
pasLabel.text = "_ _ _ _ _ _"
}else if (reNumStr as NSString).length == 1 {
pasLabel.text = "* _ _ _ _ _"
}else if (reNumStr as NSString).length == 2 {
pasLabel.text = "* * _ _ _ _"
}else if (reNumStr as NSString).length == 3 {
pasLabel.text = "* * * _ _ _"
}else if (reNumStr as NSString).length == 4 {
pasLabel.text = "* * * * _ _"
}else if (reNumStr as NSString).length == 5 {
pasLabel.text = "* * * * * _"
}else if (reNumStr as NSString).length == 6 {
pasLabel.text = "* * * * * *"
}
}
if (tempStr as NSString).length == 12 {
if numStr == reNumStr {
global = true
one = "1"
two = "3"
PasswordManager.shareInstance().addDriveReco(PasswordReco(passwordStr: "\(reNumStr)",first: one,second: two))
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "userGesturePasswordEnabled")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "PWDEnabled")
NSUserDefaults.standardUserDefaults().synchronize()
NSHelper.showAlertTitle("程序密码设置成功,请返回主程序", forView: self.view)
//跳转下一界面
}else {
titleLabel.text = "两次密码输入不一致,请重新输入"
pasLabel.text = "_ _ _ _ _ _"
numStr = ""
reNumStr = ""
tempStr = ""
NSHelper.showAlertTitle("两次密码输入不一致,请重新输入", forView: self.view)
tempStr = ""
}
}
}
else {
if everyStr != numStr {
if (numStr as NSString).length == 0{
pasLabel.text = "_ _ _ _ _ _"
}else if (numStr as NSString).length == 1 {
pasLabel.text = "* _ _ _ _ _"
}else if (numStr as NSString).length == 2 {
pasLabel.text = "* * _ _ _ _"
}else if (numStr as NSString).length == 3 {
pasLabel.text = "* * * _ _ _"
}else if (numStr as NSString).length == 4 {
pasLabel.text = "* * * * _ _"
}else if (numStr as NSString).length == 5 {
pasLabel.text = "* * * * * _"
}else if (numStr as NSString).length == 6 {
numStr = ""
reNumStr = ""
tempStr = ""
titleLabel.text = "请再次输入密码"
pasLabel.text = "_ _ _ _ _ _"
i = i + 1
if i == 2 {
NSHelper.showAlertTitle("您还有1次密码输入机会", forView: self.view)
}else if i == 3 {
NSHelper.showAlertTitle("您没有机会输入密码,请尝试修改密码", forView: self.view)
}
}
}else {
pasLabel.text = "_ _ _ _ _ _"
numStr = ""
reNumStr = ""
tempStr = ""
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "userGesturePasswordEnabled")
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "PWDEnabled")
// self.dismissViewControllerAnimated(true, completion: nil)
navigationController?.popViewControllerAnimated(true)
}
}
}else {
NSHelper.showAlertTitle("您没有机会输入密码,请尝试修改密码", forView: self.view)
}
}
func Change(sener : UIButton) {
print("修改密码页面")
navigationController?.pushViewController(ChangeVC(), animated: true)
}
//MARK:---------------------控件
func creatLabel(frame:CGRect,text:String,textColor:UIColor,textFont:CGFloat,textAlignment:NSTextAlignment) -> UILabel {
let label = UILabel.init(frame: frame)
label.text = text
label.textColor = textColor
label.font = UIFont.systemFontOfSize(textFont)
label.textAlignment = textAlignment
self.view.addSubview(label)
return label
}
func creatBtn(frame:CGRect,text:String,textColorNor:UIColor,textColorHig:UIColor,textFont:CGFloat,imageNor:String,imageHig:String,btnTag:Int,target:Selector) -> UIButton {
let btn = UIButton.init(frame: frame)
btn.setTitle(text, forState: .Normal)
btn.setTitleColor(textColorNor, forState: .Normal)
btn.setTitleColor(textColorHig, forState: .Selected)
btn.setTitleColor(textColorHig, forState: .Highlighted)
btn.setImage(UIImage.init(named: imageNor), forState: .Normal)
btn.setImage(UIImage.init(named: imageHig), forState: .Highlighted)
btn.setImage(UIImage.init(named: imageHig), forState: .Selected)
btn.tag = btnTag
btn.addTarget(self, action: target, forControlEvents: .TouchUpInside)
view.addSubview(btn)
return btn
}
}
相关文章:

程序员的自我修养--链接、装载与库笔记:Windows PE/COFF
1. Windows的二进制文件格式PE/COFF 在32位Windows平台下,微软引入了一种叫PE(Portable Executable)的可执行格式。作为Win32平台的标准可执行文件格式,PE有着跟ELF一样良好的平台扩展性和灵活性。PE文件格式事实上与ELF同根同源,它们都是由…
神州数码与神州控股、神州信息共同主办首届技术年会,透露出什么信号?
11 月 8 日,神州控股、神州数码集团、神州信息共同主办“数字中国 2019 技术年会”,聚焦云计算、大数据、人工智能、区块链、5G 等前沿技术创新与应用实践,众多领域的技术专家展开了深度交流,共同探讨数字时代的技术创新与协同发展…

osi七层协议和tcp/ip四层协议
(大部分内容为转载)OSI(Open System Interconnection)是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范,共包含七层协议。OSI七层协议是由ISO (International Standards Organization)在…

Swift中页面跳转与传值:
1.简单方式 首先,Swift的跳转可分为利用xib文件跳转与storyboard跳转两种方法,我这里选择使用storyboard的界面跳转方法。 1、通过在storyboard中拉button控件建立segue跳转。 2、通过presentViewController方法进行界面跳转。 这里需要注意presentV…

知乎热议!学完Python之后,我的编程能力竟然退化了!
在知乎上有一个特别火的问题:如何学Python?你会看到很多高赞回答是:我一天就学完了。在大家群嘲的背后,我们来分析一下,为什么在已经学过的人眼里,Python这么容易学,甚至简单到被某些人鄙视呢&a…

libjpeg-turbo介绍及测试代码
很多年之前在https://blog.csdn.net/fengbingchun/article/details/10171583 中简单介绍过libjpeg-turbo的安装,因为libjpeg-turbo一直在维护更新,较之前有了些变化,这里再次整理下,并增加更多的测试代码。 libjpeg-turbo的主页为…

高级特性-多线程,GUI
2019独角兽企业重金招聘Python工程师标准>>> 创建线程两种方式第一种,导入improt thread 模块,thread.start_new_thread(功能函数名称,(参数1,参数2...)) 后面参数为功能函数的参数第二个方式类似于java,导…

Hulu视频如何提升推荐多样性?
作者 | 余沾 整理 | 深度传送门(ID: deep_deliver)导读:本文主要介绍Hulu在NIPS 2018上发表的《Fast Greedy MAP Inference for Determinantal Point Process to Improve Recommendation Diversity》中,提出的DPP算法解决视频推荐…

UITextField长度限制的写法
1.遵循代理 UITextFieldDelegate 2.点击响应方法 userNameText.addTarget(self, action: "tappedOne:", forControlEvents: UIControlEvents.EditingChanged) 3.方法的实现 func tappedOne(textField: UITextField) { textField.text textField.text?.uppercaseS…

通过Python在Windows或Linux上快速搭建HTTP服务器
在Windows 7/10或Ubuntu上可以通过python2.x或python3.x来快速搭建一个简单的HTTP服务器。 如果python为2.x,则可执行:$ python -m SimpleHTTPServer 或 $ python2 -m SimpleHTTPServer 如果python为3.x,则可执行:$ python -m h…

NAND FLASH
NAND Flash 以Micron公司的MT29F2G08为例介绍NAND Flash原理和使用。 1. 概述 MT29F2G08使用一个高度复用的8-bit总线(I/O[7:0])来数据传输、地址、指令。5个命令脚(CLE、ALE、CE#、WE#)实现NAND命令总线接口规程。3个…

swift 中跳转web view的两种方法
首先 遵循代理 引入头文件 #import <WebKit/WebKit.h> 第一种情况 直接跳转 了解不含特殊字符的 import UIKit class NewsViewController: UIViewController,WKNavigationDelegate,UIScrollViewDelegate { var webView : WKWebView WKWebView() override func viewW…

YAML开源库yaml-cpp简介及使用
关于YAML的介绍可以参考:https://blog.csdn.net/fengbingchun/article/details/88090609 yaml-cpp是用c实现的用来解析和生成yaml文件的,源码地址在https://github.com/jbeder/yaml-cpp ,这里使用的是最新发布的稳定版0.6.2. 解析和产生yam…

数据安全引担忧?get它,让你吃一颗“定心丸”
网络购物、在线外卖、远程教育、共享单车……如今,这些数字化的消费场景在个人生活中早已司空见惯。同时,在数字化浪潮下,越来越多的企业意识到大数据资产的价值,并试图推动其数字化转型。数据经济飞速发展,带来便捷和…

ETL数据抽取策略
ETL的抽取策略本文所提到的数据加载策略为OLTP系统作为源系统,并进行ETL数据加载到OLAP系统中所采用的一般数据加载策略。依循数据仓库的工作方式,原始资料由源数据库被抽取出来后,将在中间过程被写入到”Operational Data Store”(ODS)&…

iOS下拉tableView实现上面的图片放大效果
#import "ViewController.h" #define kScreenbounds [UIScreen mainScreen].bounds #define kScreenWidth [UIScreen mainScreen].bounds.size.width #define kScreenHeight [UIScreen mainScreen].bounds.size.height // 宏定义一个高度 #define pictureHeight 200…

在Windows7/10上通过VS2013编译FFmpeg 4.1.3源码操作步骤
多年前在https://blog.csdn.net/fengbingchun/article/details/40951403 中对FFmpeg在windows下的编译过程做过说明,那时FFmpeg版本用的2.4.3, VS是2010,现在FFmpeg最新稳定版为4.1.3,通过VS2013进行编译,较之前有了些不同&#x…

GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100)本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者&…

entity framework 使用Mysql配置文件
2019独角兽企业重金招聘Python工程师标准>>> <?xml version"1.0" encoding"utf-8"?> <configuration><configSections><section name"entityFramework" type"System.Data.Entity.Internal.ConfigFile.En…

UIWebView、WKWebView使用详解及性能分析
一、整体介绍 UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView。通过简单的测试即可发现UIWebView占用过多内存,且内存峰值更是夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提…

FFmpeg中libavutil库简介及测试代码
libavutil是一个实用库,用于辅助多媒体编程。此库包含安全的可移植字符串函数、随机数生成器、数据结构、附加数学函数、加密和多媒体相关功能(如像素和样本格式的枚举)。libavcodec和libavformat并不依赖此库。 以下是测试代码,包括base64, aes, des, …

区块链人才月均薪酬1.6万元?
在上周,我国宣布将重点推动区块链技术的发展,这个消息无疑是为区块链开发者们打了一直强心剂,简直是喜大普奔啊 ! 因为之前区块链这个技术虽然一直在圈内很火,但是却没有得到国家的全面认可和推广,所以很多…

用最少的时间学最多的数据挖掘知识(附教程数据源)| CSDN博文精选
作者 | 宋莹来源 | 数据派THU(ID:DatapiTHU)本文为你介绍数据挖掘的知识及应用。引言最近笔者学到了一个新词,叫做“认知折叠”。就是将复杂的事物包装成最简单的样子,让大家不用关心里面的细节就能方便使用。作为数据科学领域从业…

WKWebView 的使用简介
1. navigationDelegate [objc] view plaincopy print?- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation { // 类似UIWebView的 -webViewDidStartLoad: NSLog("didStartProvisionalNavigation"); [UIAppli…

FFmpeg中libswscale库简介及测试代码
libswscale库功能主要包括高度优化的图像缩放、颜色空间和像素格式转换操作。 以下是测试代码(test_ffmpeg_libswscale.cpp): #include "funset.hpp" #include <string.h> #include <iostream> #include <string> #include <memor…

FFmpeg中libswresample库简介及测试代码
libswresample库功能主要包括高度优化的音频重采样、rematrixing和样本格式转换操作。 以下是测试代码(test_ffmpeg_libswresample.cpp),对音频了解较少,测试代码是参考examples中的: #include "funset.hpp" #include <iostre…
高德地图POI搜索,附近地图搜索,类似附近的人搜索
效果图: 首先导入道德地图的SDK,导入步骤不在这里介绍 2:包含头文件: [objc] view plaincopy #import <AMapSearchKit/AMapSearchAPI.h> 3:代码 [javascript] view plaincopy property(nonatomic,strong)AMap…

手把手教你实现PySpark机器学习项目——回归算法
作者 | hecongqing 来源 | AI算法之心(ID:AIHeartForYou)【导读】PySpark作为工业界常用于处理大数据以及分布式计算的工具,特别是在算法建模时起到了非常大的作用。PySpark如何建模呢?这篇文章手把手带你入门PySpark,…

mcDropdown使用方法
最近使用了mcDropdown插件,百度一查,资料较少,只看到了mcDropdown官网的英文说明文档,所以今天就写点,以便以后使用。 第一步:引用jquery库和css jQuery v1.2.6 (or higher)*jquery.mcdropdown.js Plug-inj…

Windows上通过VLC播放器搭建rtsp流媒体测试地址操作步骤
1. 从https://www.videolan.org/index.zh.html 下载最新的windows 64bit 3.0.6版本并安装; 2. 打开VLC media player,依次点击按钮:”媒体” --> “流”,如下图所示: 3. 点击”添加”按钮,选择一个视频…