测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可 | MIT |
发布最新发布 | 2016年4月 |
SPM支持 SPM | ✗ |
由Frederik Jacques维护。
TNSwiftyCheckboxGroup 是一个基于 UICollectionView 的创建复选框组的组件。
有三种预定义样式
并且您可以选择创建自己的子类并构建自己的复选框类型。
它可以在横屏和竖屏模式下运行。
编程方式设置起来更快,因为您不需要在 Interface Builder 中编排。
使用 TNSwiftyCheckboxModel
类创建数组。
var checkboxModels = [
TNSwiftyCheckboxModel(name: "Elephant with a very long proboscis", checked: false),
TNSwiftyCheckboxModel(name: "Tiger", checked: true),
TNSwiftyCheckboxModel(name: "Antilope", checked: false),
TNSwiftyCheckboxModel(name: "Monkey", checked: true),
TNSwiftyCheckboxModel(name: "Spider", checked: false)
]
a) 如果您通过 CocoaPods 添加了此类,您应该在类的顶部导入模块
import TNSwiftyCheckboxGroup
b) 创建 TNSwiftyCheckboxViewController
的一个实例并将其添加到视图控制器中。
checkboxVC = TNSwiftyCheckboxViewController()
addChildViewController(checkboxVC)
view.addSubview(checkboxVC.view)
checkboxVC.didMoveToParentViewController(self)
使用步骤 1 中创建的数组设置 checkboxModels
属性
checkboxVC.checkboxModels = checkboxModels
要将 TNSwiftyCheckboxGroup 添加到您的 Storyboard,您需要执行以下步骤。别担心,不会花很长时间。
从 对象库 中拖拽一个 Container View
对象到您的场景中。设置您喜欢的约束。
删除附加的视图控制器(这将在您添加容器视图时自动添加)。
从 对象库 中拖拽一个 Collection View Controller
对象。注意:您可以安全地删除 Interface Builder 添加的原型 UICollectionViewCell
接口。
从容器视图控制器按 Ctrl 键拖拽到 UICollectionViewController 并选择 embed
转场类型。
将 UICollectionView 的 Custom Class
属性更改为 TNSwiftyCheckboxViewController
。
现在我们需要向视图控制器提供一个包含 TNSwiftyCheckboxModel
对象的数组。为了做到这一点,我们将使用 prepareForSegue(_:sender:)
。选择您在步骤 3 中创建的 embed 转场,转到 属性检查器。在这里,您可以设置一个标识符。
(a)打开您的视图控制器类,并实现prepareForSegue(_:sender:)
方法。
(b)如果您通过CocoaPods添加了这个类,您应该在类的顶部导入该模块。
import TNSwiftyCheckboxGroup
在这个方法中,我们将首先检查正确的segue。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if( segue.identifier == "YOUR-SEGUE-IDENTIFIER" ) {
// Add code for step 9 here
}
}
为每个您想可视化的复选框创建一个TNSwiftyCheckboxModel
对象数组。
var checkboxModels = [
TNSwiftyCheckboxModel(name: "Elephant with a very long proboscis", checked: false),
TNSwiftyCheckboxModel(name: "Tiger", checked: true),
TNSwiftyCheckboxModel(name: "Antilope", checked: false),
TNSwiftyCheckboxModel(name: "Monkey", checked: true),
TNSwiftyCheckboxModel(name: "Spider", checked: false)
]
您可以通过segue.destinationViewController
属性引用TNSwiftyCheckboxViewController
。
checkboxVC = segue.destinationViewController as! TNSwiftyCheckboxViewController
使用您在步骤9中创建的数组设置checkboxModels
属性。
checkboxVC.checkboxModels = checkboxModels
就这样了 :)
如果您想在一个复选框值更改时得到通知,可以将您的类设置为TNSwiftyCheckboxViewController
的委托。只需让您的类符合TNSwiftyCheckboxViewControllerDelegate
即可。
class YourViewController: UIViewController, TNSwiftyCheckboxViewControllerDelegate {}
实现swiftyCheckboxViewController(viewController:checkedValueChangedTo:ofCheckboxModel:)
方法
您可以通过将您的类设置为样式数据源来覆盖类的外观。这只是一个返回具有类型[String:AnyObject]的Dictionary。此字典的键在结构TNSwiftyCheckboxStyleOptions
中定义。
键 | 说明 |
---|---|
CollectionViewWidthOfCell | 复选框单元格的宽度。默认值:150 |
CollectionViewBackgroundColor | 集合视图的背景颜色。默认值:白色 |
FontOfNameLabel | 名称标签的字体。默认值:系统 12pt |
FontColorOfNameLabel | 名称标签的字体颜色。默认值:#333333 |
PreferredWidthOfNameLabel | 名称标签的首选宽度。默认值:100 |
CheckboxOuterColor | 内置复选框类型的边框颜色。默认值:#333333 |
CheckboxInnerColor | 内置复选框类型的内部颜色。默认值:白色 |
CheckboxPadding | 内置复选框类型的内部和外部的填充。默认值:5 |
CheckboxUncheckedImageName | 用于未选中图像的图像名称(定义在您的图像资产目录中),如果您使用的是TNSwiftyImageCheckboxView 样式。默认值:unchecked-image |
CheckboxCheckedImageName | 用于选中图像的图像名称(定义在您的图像资产目录中),如果您使用的是TNSwiftyImageCheckboxView 样式。默认值:checked-image |
例如
func styleDictionaryForCheckboxView() -> [String : AnyObject] {
return [
TNSwiftyCheckboxStyleOptions.CheckboxOuterColor : UIColor.redColor(),
]
}
uncheckedModels
:返回所有当前处于未选中状态的TNSwiftyCheckboxModel
对象数组
checkedModels
:返回所有当前处于已选中状态的TNSwiftyCheckboxModel
对象数组
TNSwiftyCheckboxGroup类有一些便利方法来询问您组的当前状态。
areAllCheckboxesChecked
:如果所有复选框都被选中,则返回bool类型areAllCheckboxesUnchecked
:如果所有复选框都被未选中,则返回bool类型您还可以创建自己的复选框单元格并将它们注册到TNSwiftyCheckboxViewController。以下是您必须采取的步骤。
创建一个新类并从UICollectionViewCell
派生出来。选中字段同时创建XIB文件。在这个例子中,我将类命名为TriangleCollectionViewCell。
打开您的TriangleCollectionViewCell.swift文件
在文件顶部添加导入语句
import TNSwiftyCheckboxGroup
将超类从 UICollectionViewCell
修改为 TNSwiftyCheckboxView
在继续之前,你现在可以在界面构建器中创建自己的复选框视图。
将 对象库 中的 UIView 对象拖动到您的 XIB 文件中
将 对象库 中的 UILabel 对象拖动到您的 XIB 文件中
为它们设置约束
在步骤 1 中创建的 UIView 上右键单击并从三角 Collection View 控制器拖动一个引用出口,并选择 checkboxContentView
在步骤 2 中创建的 UILabel 上右键单击并从三角 Collection View 控制器拖动一个引用出口,并选择 nameLabel
选择顶级视图(三角 Collection View Cell)并转到 属性检查器,添加一个 重用标识符。只需使用与您的类文件相同的方式命名(在本例中为 TriangleCollectionViewCell)
现在,我们只需要将我们的自定义复选框类注册到 TNSwiftyCheckboxGroupViewController。您可以通过将 type
属性设置为 .Custom
并使用方法 registerCustomViewWithClassName(:)
注册您自己的类来完成此操作。
在您的自己的视图中添加以下代码。
let vc = segue.destinationViewController as! TNSwiftyCheckboxViewController
vc.type = .Custom
vc.registerCustomViewWithClassName("TriangleCollectionViewCell")
vc.checkboxModels = checkboxModels
如果您构建并运行,您将会看到自定义单元格出现。但您的类中还没有逻辑。有几个方法您可以覆盖来为您的单元格添加更多功能。
setup()
:在此方法中,您可以添加额外视图或添加动画。不要忘记在此方法的末尾调用 super.setup
,这将自动设置 nameLabel
。当然,如果您想自己这样做,不要调用 super.setup()
:-)
checkCheckbox( checkValue:withAnimation: )
:此方法在单元格(未)被选中时被调用,是一个提供自定义(未)检查动画的好地方。
要运行示例项目,克隆仓库,并首先从示例目录中运行 pod install
。
TNSwiftyCheckboxGroup 可以通过 CocoaPods 进行获取。要安装它,只需在 Podfile 中添加以下行即可
pod "TNSwiftyCheckboxGroup"
Frederik Jacques, [email protected]
TNSwiftyCheckboxGroup 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。