iOS UIAlertController中UITextField添加晃动效果与边框颜色详解
时间:2019-04-07
本文章向大家介绍iOS UIAlertController中UITextField添加晃动效果与边框颜色详解,主要包括iOS UIAlertController中UITextField添加晃动效果与边框颜色详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
大家都知道在iOS8中引入了UIAlertController,通过UIAlertController可以方便的添加文本框进行编辑,但是,在输入错误的内容时,如何对用户进行提醒就成了问题,因为UIAlertController中的所有UIAlertAction都会导致UIAlertController的消失。这里,我就描述两种提示的方法,分别是晃动文本框和修改边框的颜色。下面话不多说了,来一起看看详细的实现方法吧。
晃动UITextField
晃动UITextField其实就是对它添加一个动画效果,参考了Stack Overflow上的做法,通过添加position的动画,可以实现UIAlertController中的UITextField的晃动效果。
- (void)shakeField:(UITextField *)textField { CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"]; animation.duration = 0.07; animation.repeatCount = 4; animation.autoreverses = YES; animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(textField.centerX - 10, textField.centerY)]; animation.toValue = [NSValue valueWithCGPoint:CGPointMake(textField.centerX + 10, textField.centerY)]; [textField.layer addAnimation:animation forKey:@"position"]; }
修改UITextField的边框颜色
UIAlertController中文本框的默认边框颜色都是黑色,通常在输入异常时会改为红色进行提醒,这个时候,如果直接修改UITextField的border将会变成下图样式:
- (void)testAlert { UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"测试" message:@"测试输入框边框颜色" preferredStyle:UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]]; [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { textField.layer.borderColor = [UIColor redColor].CGColor; textField.layer.borderWidth = 1; }]; [self presentViewController:alert animated:YES completion:nil]; }
而在实际中我们应该这样修改:
- (void)testAlert { UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"测试" message:@"测试输入框边框颜色" preferredStyle:UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]]; [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { self.currentField = textField; }]; [self presentViewController:alert animated:YES completion:^{ [[self.currentField superview] superview].backgroundColor = [UIColor redColor]; }]; }
这样的产生效果才是我们想要的。
需要注意的是:一定要在present以后进行设置,否则会发现设置是无效的,因为没有present之前,textField的superview是nil,设置是无效的。
总结
以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
- 我所理解的Intent 和Intent-filter
- 基于 CentOS 搭建微信小程序服务
- 离线部署 CDH 5.12.1 及使用 CDH 部署 Hadoop 大数据平台集群服务
- 在开发中实现点击 WebView 中的图片,调用原生控件放大展示
- 大数据平台搭建 Hadoop-2.7.4 + Spark-2.2.0 快速搭建
- ajax 设置Access-Control-Allow-Origin实现跨域访问
- gradle新建工程,多项目依赖,聚合工程
- Apache Hive-2.3.0 快速搭建与使用
- HBase-1.3.1 集群搭建 - 报错整理
- 分布式唯一ID生成器Twitter 的 Snowflake idworker java版本
- 使用 Phoenix-4.11.0连接 Hbase 集群 ,并使用 JDBC 查询测试
- 高并发分布式系统中生成全局唯一Id汇总
- ZooKeeper 可视化监控 zkui
- 关于RBAC(Role-Base Access Control)的理解
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python 数据分析(四):Pandas 进阶
- 用 Python 写一个颜值测试小工具
- 当 Python 遇到微信
- CenterNet之loss计算代码解析
- 爬取林丹和赵雅淇的微博评论,看看网友都说了些什么
- 静默安装单机Oracle数据库软件
- 如何用 Python 生成炫酷二维码
- 一个在交流群里讨论过两轮的问题,答案竟然跟一个 PEP 有关
- Python 函数为什么会默认返回 None?
- 潘粤明的《龙岭迷窟》到底怎么样?我用 Python 得出了一些结论!
- [译]按照EIP-712规范签名完成委托和投票
- 更好Solidity合约调试工具: console.log
- 发现了合自己胃口的公众号,但文章太多翻来翻去真麻烦,还好我学了 Python
- 用 Python 下载抖音无水印视频
- 《民国奇探》的弹幕有点逗比,用 Python 爬下来看看