AnimatedTextInput 
在 Jobandtalent 应用程序中使用的 iOS 自定义文本输入组件。
安装
使用 cocoapods 在您的项目中安装此自定义控件。
pod 'AnimatedTextInput', '~> 0.3.0'
用法
使用主类 AnimatedTextInput。您可以创建它,无论是通过代码还是将新实例的 UIView 拖入您的 storyboard/nib 文件,并在身份检查器中设置其类。
输入类型
目前有6种不同类型,在AnimatedTextInputType枚举中定义。
-
文本:基本的文本输入,与UITextField的行为相同。
-
密码:安全文本输入和
eye开关按钮,用于显示其内容。 -
数字:数字文本输入。
-
选择:禁用用户对文本输入交互。期望执行
tapAction,并在文本输入被按压时调用。通常用于展示一组选项并在选中一个选项后修改其状态。 -
多行:与UITextView类似,没有滚动。视图的
intrinsicContentSize将随着用户输入而增长。如果需要这种行为并使用自动布局,请固定底部或顶部,否则视图不会增长(就像使用UILabel一样)。 -
通用:期望一个配置好的
TextInput。如果需要一个带有自定义行为的UITextField或UITextView,请使用此选项。检查TextInput和TextInputDelegate协议并创建一个符合它们的类。
要切换类型,只需使用type属性赋予AnimatedTextInputType枚举中的一个值。
textInput.type = .numeric样式
创建新的视觉效果就像创建一个新的符合AnimatedTextInputStyle协议的struct一样简单。
例如
struct CustomTextInputStyle: AnimatedTextInputStyle {
let activeColor = UIColor.orangeColor()
let inactiveColor = UIColor.grayColor().colorWithAlphaComponent(0.3)
let errorColor = UIColor.redColor()
let textInputFont = UIFont.systemFontOfSize(14)
let textInputFontColor = UIColor.blackColor()
let placeholderMinFontSize: CGFloat = 9
let counterLabelFont: UIFont? = UIFont.systemFontOfSize(9)
let leftMargin: CGFloat = 25
let topMargin: CGFloat = 20
let rightMargin: CGFloat = 0
let bottomMargin: CGFloat = 10
let yHintPositionOffset: CGFloat = 7
}然后,使用style属性来设置它。
textInput.style = CustomTextInputStyle()其他注意事项
-
您可以将
AnimatedTextInput用作UITextField或UITextView的替代品。要设置或检索输入文本,请使用text属性。 -
该控件提供了一个设置计数器标签的简单方式。只需调用函数
showCharacterCounterLabel(with:)并给出一个最大字符数。 -
AnimatedTextInput有自己的委托方法,与UITextFieldDelegate和UITextViewDelegate非常相似。
下载并查看示例项目以获取更多示例。
最后一个问题:为什么创建一个TextInput抽象而不直接使用UITextField或UITextView呢?
从API的角度来看,我们只想处理一个控件。然而,我们需要一些被UITextField或UITextView不支持的行为。例如,我们希望AnimatedTextInput支持多行输入,但UITextField不支持这一点。我们还希望密码类型支持安全文本输入,但UITextView也不支持这一点。这就是我们最终创建TextInput抽象的原因。
常见问题解答
- 如何启用自动纠正(或
UITextField或UITextView提供的任何属性)?https://github.com(jobandtalent/AnimatedTextInput/issues/67

