ToolboxLGNT 0.1.3

ToolboxLGNT 0.1.3

Émilie Legent 维护。



  • 作者
  • amoriarty

ToolboxLGNT

CI Status Version License Platform

盒子里有什么?

这个项目是一个简单的 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文件。