在 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