仿支付宝支付密码输入框
来源:互联网 发布:平胸的好处 知乎 编辑:程序博客网 时间:2024/05/01 08:59
仿支付宝支付密码输入框
前段时间看到小伙伴们在做一个密码输入框,刚好拿来复习下Quartz 2D,不废话,直接上图:
主要思路如下:
- UITextField上面覆盖一个UIView
- 设置UIView的userInteractionEnabled为NO,让UITextField响应点击事件
- 监控UITextField中输入的文字内容
- 在UIView上用Quartz 2D来绘制图形
控制器中主要代码
//初始化界面UITextField * pwdTextField = [[UITextField alloc] initWithFrame:CGRectMake(10, 100, self.view.frame.size.width - 20, 50)]; pwdTextField.delegate = self; self.pwdTextField = pwdTextField; pwdTextField.backgroundColor = [UIColor yellowColor]; pwdTextField.tintColor = pwdTextField.backgroundColor; [pwdTextField setTextColor:pwdTextField.backgroundColor]; pwdTextField.alpha = 0.1; pwdTextField.keyboardType = UIKeyboardTypeNumberPad; [self.view addSubview:pwdTextField]; PwdView * pwdView = [[PwdView alloc] initWithFrame:pwdTextField.frame]; pwdView.backgroundColor = [UIColor whiteColor]; pwdView.userInteractionEnabled = NO; pwdView.pwdCount = 7; self.pwdView = pwdView; [self.view addSubview:pwdView];
//监听输入框中输入的文字 让自定义的UIView画图#pragma mark UITextFieldDelegate- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ NSString * str = [NSString stringWithFormat:@"%@%@", textField.text, string]; if (str.length > self.pwdView.pwdCount) { [self.pwdTextField setText:[str substringToIndex:self.pwdView.pwdCount]]; return NO; }else{ if ([string isEqualToString:@""]) { [self.pwdView setCount:str.length - 1]; }else{ [self.pwdView setCount:str.length]; } } return YES;}
“`
//自定义的UIView 重写drawRect方法,
-(void)drawRect:(CGRect)rect{
CGContextRef ctx = UIGraphicsGetCurrentContext();//画最外边的矩形CGContextSetLineJoin(ctx, kCGLineJoinRound);CGContextAddRect(ctx, rect);//分割线CGFloat gridWidth = rect.size.width/self.pwdCount;CGFloat gridHeight = rect.size.height;for (int i = 0; i < self.pwdCount; i++) { CGContextMoveToPoint(ctx, gridWidth * (i + 1), 0); CGContextAddLineToPoint(ctx, gridWidth * (i + 1), gridHeight);}CGContextStrokePath(ctx);//画点CGFloat pointY = rect.size.height/2;for (int i = 0; i < count1; i++) { CGContextAddArc(ctx, gridWidth/2 + i * gridWidth, pointY, 5, 0, M_PI *2, 1); CGContextFillPath(ctx);}
}
//正常情况下 drawRect只会调用一次 输入框的文字每变化一次,
//我们就需要调用[self setNeedsDisplay]; 重新执行drawRect方法
- (void)setCount:(NSInteger)count{
count1 = count;
[self setNeedsDisplay];
}
总结:
这种做法只是骗了用户的眼睛,个人认为很挫,大家有更好的方法可以和我交流哈!QQ:729376398。
0 0
- 仿支付宝支付密码输入框
- 仿支付宝支付 密码输入
- Andriod 仿支付宝密码输入框
- android 仿支付宝密码输入框
- 【笔记】仿支付宝密码输入框
- 仿支付宝密码输入框
- 仿支付宝支付密码输入框功能
- Android仿支付宝支付密码输入框
- Android仿支付宝支付密码输入框
- Android 仿支付宝支付密码输入框
- 仿支付宝输入密码界面
- 封装仿支付宝密码输入效果
- 仿支付宝密码输入键盘
- 仿淘宝支付密码输入框
- 仿支付宝输入支付密码2(带动画)
- Android 仿支付宝密码框的EditText输入框
- 仿支付宝的密码均分输入框
- 自定义view仿支付宝密码输入框
- hdu3388Coprime 二分+容斥原理
- 2015年第十三周oj:求三数的和
- + $exception {"“DataList1”上同时定义了 DataSource 和 DataSourceID。请移除
- PHP去除BOM头
- Core Animation 官方文档第三章(动画图层内容)
- 仿支付宝支付密码输入框
- 23个MySQL常用查询语句
- Android Audio 音频输出设备切换
- ViewPager+自定义标题实现右左滑动,当前指示标题根着改变
- Jenkins+tomcat+jdk setup
- MVC北京络捷斯特第三方物流系统技术解析(七)签收录入
- Linux目录管理全面掌握
- C++继承与派生的访问基本规则
- JQuery的Ajax跨域请求的解决方案