AKABeacon是一个为Interface Builder设计的iOS数据绑定框架。
版本0.3
Beacon可在CocoaPods上使用。
要集成AKABeacon,请在Podfile中启用use_frameworks!
并添加AKABeacon依赖项
use_frameworks!
...
pod 'AKABeacon', '~> 0.3'
如果您在使用CocoaPods try插件,则可以通过以下方式轻松开始使用Beacon进行实验:
$ pod try AKABeacon
许可证
入门
viewDidLoad
方法中添加[AKABindingBehavior addToViewController:self]
(您需要@import AKABeacon;
)。myTextProperty
。示例项目包含大量不同类型的绑定示例。
典型使用场景(图中黄色气泡表示您要进行的操作)
幕后发生的事情(Beacon的工作,图中所有蓝色部分)
许多任务实际上是由负责管理绑定、提供数据上下文和控制视图层次结构行为的控件执行的。在大多数情况下,您可以忽略控件,因为它们在不打扰您的透明操作中完成了工作。如果您需要与之交互,它们提供了精细粒度的代理方法,您可以使用这些方法来检查和控制控件和绑定的行为。如果您的视图控制器符合该协议,它将自动用作AKABindingBehaviorDelegate。
请注意,Beacon中的大多数模块都是设计成独立的。例如,您可以用绑定而不用控件,并且无需使用表单视图控制器来管理控件和绑定。
我们投入了大量精力确保您可以在不破坏您现有的架构的情况下,使用框架中真正帮助您的部分,以整合数据绑定功能。
我们还努力完成所有支持标准用例的工作,以使您不必编写代码,就可以确保在您键入时文本字段是可见的,而且在旋转设备时它仍然可行。这比滚动要深入得多。在未来的版本中,您将获得对主题、自动调整字体大小、突出显示搜索词、表单事务支持(在响应当前表单编辑会话的最后,并且只有有效时才更新模型值)等的自动支持。
注意:这里提供的示例已经过时,请查看演示应用程序以获取最新的印象。
以下截图显示了一个包含三个文本字段的视图。前两个字段绑定到 stringValue
属性,第一个文本字段会在每次按键后更新数据源,第二个文本字段会在文本字段失去键盘焦点时更新。
第三个文本字段绑定到数字值,展示了不同的编辑和显示数字格式。
stringValue {
textForUndefinedValue: "(Please enter some text)",
treatEmptyTextAsUndefined: $true
}
stringValue { liveModelUpdates: $false }
numberValue {
numberFormatter: {
numberStyle: $enum.CurrencyStyle
},
editingNumberFormatter: {
maximumFractionDigits: 5
}
}
选择器键盘触发视图包含内容并且通过打开包含选择器视图的键盘来响应用户的点击触摸。本例显示了两个此类触发视图。第一个配置为从字符串数组中选择字符串,并包含一个与选中值绑定的标签。第二个触发视图从对象数组中选择对象(以选择标题显示标题属性)。
本处使用的绑定表达式为
标签:(连接标签到键路径 stringValue
并配置绑定,在值未定义时显示“(点击选择)”)
stringValue {
textForUndefinedValue: "(tap to choose)"
}
选择器:(选择器键盘从 stringArrayValue
获取其选项。由于没有指定标题,数组条目将用作相应选项的值)
stringValue {
choices: stringArrayValue,
titleForUndefinedValue: "(please choose)"
}
标签:(此选择器包含多个标签,这些标签绑定到数据上下文的不同属性,在本例中为对象)
objectValue.title
objectValue.value
选择器:(此处,数组项是复杂对象,因此将标题属性定义为相对于相应数组项的键路径;选择器键盘还支持设置 liveModelUpdates)
objectValue {
title: title,
choices: objectArrayValue,
liveModelUpdates: $false
}
日期选择器标签:(参见标签格式说明部分)
dateValue { dateFormatter: { dateStyle: $enum.LongStyle, timeStyle: $enum.MediumStyle } }
选择器:(日期选择器只需要选中值的键路径)
dateValue
以下示例展示了 Beacon 的内置格式化能力。Beacon 使用 NSFormatter 作为界面进行格式化,并分别使用 NSNumberFormatter 和 NSDateFormatter 对数字和日期进行格式化。您可以定义其他类型的自定义格式化器。
numberFormatter 属性支持 NSNumberFormatter 大多数配置属性。枚举值可以是 $enum.Value
(如果枚举为 Beacon 所知)或 $enum.Type.Value
(您可以为您自己的枚举提供映射)。
floatValue {
numberFormatter: {
numberStyle: $enum.CurrencyStyle
}
}
textForYes 和 textForNo 允许您将数字值映射到标题。
boolValue {
textForYes: "Yes",
textForNo: "No"
}
如果您不需要任何格式化,只需指定值的键路径就足够了。
textValue
您可以通过指定尖括号内的类名来使用自己的格式化器。然而,您将被限制为能够表示为自定义格式器配置的绑定表达式的数据类型。如上所述,枚举值可以注册
objectValue {
formatter: <CustomFormatter> {
format: "Hello, %@"
}
}
我们计划支持如 mustache 或 handlebars 之类的模板库。一旦实现,类似的示例将如下所示
objectValue {
formatter: <MustacheFormatter> {
template: "Hello, {{givenName}} {{familyName}}"
}
}
类似于数字值,日期值可以使用 NSDateFormatter 进行格式化。
dateValue {
dateFormatter: {
dateStyle: $enum.NSDateFormatterStyle.LongStyle,
timeStyle: $enum.LongStyle
}
}