AstroForms 0.1.1

AstroForms 0.1.1

Andrew Plummer 维护。



  • 作者
  • plummer

Astro Forms

Bitrise App Page Astro Forms Documentation

Astro Forms is an approachable iOS forms framework for building beautiful, reusable and easy to maintain forms. Type Safe Row Access, Validation, Manage Multiple Themes, Custom Focus Rects, Keyboard Management

入门

要获取入门指南、参考文档和包含的表单,请访问 文档

想要直接进入吗?

pod install 'AstroForms'

什么是 Astro Forms?

Astro Forms 是一个框架,它提供构建项目高度定制和可重用表单的结构。因此它与其它框架不同 - 它特别不是一组可子类化的元素或围绕 UIKit 的抽象集合。相反,它是一套协议和少量的抽象类,您可以组合它们来构建 您自己的 表单。这是一种观点化的做事方式,但您将有更少的代码(更少🐛)、更多灵活性,可构建除了传统标准外观表单之外的所有东西。

直言不讳 - 什么是 Form

它是一个包含单个 UIStackViewUIView 子类 - 它控制渲染、显示/隐藏、验证以及其他所有可能需要的表单功能。

… 还有一个 Row 呢?

这是一个符合多种 Row 协议的类(如 ValueRowFocusableRow等),因此它可以与它的 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
)