Astro Forms
入门
要获取入门指南、参考文档和包含的表单,请访问 文档。
想要直接进入吗?
pod install 'AstroForms'
什么是 Astro Forms?
Astro Forms 是一个框架,它提供构建项目高度定制和可重用表单的结构。因此它与其它框架不同 - 它特别不是一组可子类化的元素或围绕 UIKit 的抽象集合。相反,它是一套协议和少量的抽象类,您可以组合它们来构建 您自己的 表单。这是一种观点化的做事方式,但您将有更少的代码(更少
Form
?
直言不讳 - 什么是 它是一个包含单个 UIStackView
的 UIView
子类 - 它控制渲染、显示/隐藏、验证以及其他所有可能需要的表单功能。
Row
呢?
… 还有一个 这是一个符合多种 Row
协议的类(如 ValueRow
、FocusableRow
等),因此它可以与它的 Form
交互,并且还包含一个普通的 UIView
和一个 Nib。
示例
有关入门指南、参考文档以及包含的表单的信息,请前往 文档。
然而,作为一个基本的概述,以便您了解使用 Astro Forms 的感觉
渲染行
渲染一个行只需要给它一个标签并配置它的视图
let emailRow = TextFieldRow(tag: LoginFormTag.email) {
$0.view.label.text = "Email"
$0.view.textField.placeholder = "[email protected]"
$0.view.textField.keyboardType = .emailAddress
$0.view.textField.autocorrectionType = UITextAutocorrectionType.no
}
// inside a Form subclass
add(emailRow)
您可以在此找到该行的实现 这里。
查找行
查找行既简单又安全
let emailRow: TextFieldRow? = findRow(tag: LoginFormTag.email)
每一行的值都是有类型的
let stringValue = emailRow?.value
RowTag
实现可以关联值,因此动态行渲染和访问也很容易
let addressLine4Row: TextFieldRow? = findRow(tag: LoginFormTag.custom("address-line-4"))
验证行
表单可以采用便捷的块链语法来验证行
let isValid: Bool = validate(
row: emailRow,
{ $0.count > 0 }, // The rows typed value (String) is passed into each validation block
{ $0.contains "@" }
)
内置的 ValidationRule
工厂提供可扩展的验证方法,用于复用。例如,对于上面(非常糟糕的)电子邮件验证,ValidationRule.isEmail
是内置的。这可以与内联规则混合使用。
let isValid: Bool = validate(
row: emailRow,
{ $0.count > 0 }, // The rows typed valued is passed into each validation block
ValidationRule.isEmail
)