ToolboxLGNT
盒子里有什么?
这个项目是一个简单的 pod,收集了我发现的一些解决方案和经常使用的功能。
约束
我创建了一个 UIView 扩展,以便将可读约束设置到视图上。它还包含填充 superview 或将其居中的函数。
let firstView = UIView()
let secondView = UIView()
let constraint: NSLayoutConstraint = firstView.constraint(.leading, to: secondView)
在上面的示例中,我们只是将第一个视图的 leading 约束到第二个视图的 leading。但也可以将视图的一部分约束到第二个视图的另一部分。
let firstView = UIView()
let secondView = UIView()
let constraint = secondView.constraint(.top, to: firstView, .bottom)
您还可以传递一个布局指南而不是视图。
override func viewDidLoad() {
super.viewDidLoad()
let firstView = UIView()
_ = firstView.constraint(.leading, to: view.safeAreaLayoutGuide)
}
还有更多...
泛型
我通常通过创建两个函数来设置子类视图:setupViews() 和 setupLayout()。因此,不需要每次都在 init 中覆盖并调用这些函数,我决定创建一个 GenericView,我可以在这个视图上覆盖 setupViews() 和 setupLayouts() 而不必再次调用它。不覆盖 init 也为我的类提供了更多的清晰度,因为我不必定义一个每次都需要的 init(aDecoder: NSCoder)。
class SubView: GenericView {
override setupViews() {
super.setupViews()
...
}
override setupLayouts() {
super.setupLayouts()
...
}
}
本部分的泛型涉及集合视图和表格视图。我创建了一些泛型控制器,允许你定义一个二维数组的项目,无需关心定义了多少个部分/行,以及单元格内定义的项目或注册它。
class ExampleCell: GenericTableViewCell<T> {
override var item: T? {
didSet { /* use you value here */ }
}
}
class ExampleController: GenericTableViewController<ExampleCell, T> {
override var items: [[T]]? {
return [[/* you items in section 0 */], [/* etc */]]
}
}
这里给出的是一种伪代码,因为T需要定义为类型,但这样一来,你就可以使用自定义单元格运行表格视图,并直接传递你的数据。因为它也扩展到原始UIKit组件,所以你仍然无法重写UIKit管理组件的默认函数。
一些其他工具
例如,字符串扩展以快速从正则表达式中匹配,及为UITextView().textContainerInset定义一个常量,并删除文本和文本视图之间的空白。
示例
要运行示例项目,请先克隆仓库,然后首先从示例目录中运行pod install
。
安装
ToolboxLGNT 通过CocoaPods提供。要安装它,只需将以下行添加到你的Podfile中。
pod 'ToolboxLGNT'
许可证
ToolboxLGNT 在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。