此自定义控件是一个简单而实用的Swift网格视图实现。它允许您通过代码方式创建网格视图,一行一行地进行。除了允许您按行和列来细分此自定义视图外,它还允许您轻松地自定义单元格的边距和填充。
查看以下代码了解其工作原理。
//-- Full initializer (passing margins, padding)
let frame = CGRect(x: 10.0, y: 10.0, width: 200.0, height: 200.0)
let margins = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
let gridView = GridView(frame: frame, columns: 3, rows: 3, margins: margins, padding: 10) {
column, row, contentView in
let view = UIView(frame: contentView.bounds)
view.backgroundColor = UIColor.blueColor()
contentView.addView(view)
}
someView.addSubview(gridView)
//-- Simplified initializer (frame, columns, rows and constructor closure)
let gridView = GridView(frame: frame, columns: 3, rows: 3) {
column, row, contentView in
//.. constructor code
}
如果您决定不使用构造函数来构建您的网格视图,您可以通过调用viewAt(column:row:)便利方法非常容易地访问任何单元格。以下是使用方法:
if let targetView = gridView.viewAt(column:2, row: 1) {
//-- 'targetView' is the content view of the specified cell's (column 2, row 1)
}
此类旨在用于通过代码创建界面时的非常简单的网格。它非常适合使用按钮网格等场景,这些按钮将有相同的大小和间距,并且将保持相同的大小。考虑到这一点,请理解,目前,此控件有一些局限性,包括
也许未来的某些功能将会实现。目前,我需要一个快速的方法来在网格中布局内容,而这正是这个方法做得如此出色的原因!我鼓励您查看此项目中包含的示例代码,并稍微玩一玩这个控件来了解其适合的场景和潜在的不足。
要使用此控件,您可以复制GridView.swift类到您的项目中,或者使用CocoaPods 0.36及以上版本将以下pod添加到项目中:
pod 'ALGridView'
此组件可在MIT许可下使用。