TMMasonryExtends 是一个 Masonry 扩展库,可以用它为视图显示和隐藏状态设置不同的约束。
封装这个库主要是为了解决视图显示、隐藏的时候引入的大量条件判断和约束变更的代码。
效果图:
示例代码
|
Usage
引入头文件
Masonry 扩展接口
@interface MASConstraint (TMExtends) |
Installation
TMMasonryExtends is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'TMMasonryExtends', '~> 1.0' |
Requirements
iOS 8.0
Other
唠叨的记录放到后面来说吧,不感兴趣的小伙伴可以 Pass。
像文章开头提到的,封装这个库主要是为了解决视图显示、隐藏时,引入了大量条件判断和约束变更的代码,不利于代码日常维护。写过相对复杂视图的小伙伴,应该会同意这个观点。这个问题并不是使用 Masonry 进行视图布局带来的,而是使用约束布局必然要面对的问题。
迫切的需要TMMasonryExtends
,是因为换工作以后,新项目组使用 Masonry 管理布局,而且在刷新 UI 时,有大量的条件判断和代码分支,维护起来实在头疼。
TMMasonryExtends
最初的灵感来源于 UIView-FDCollapsibleConstraints,它针对 xib 布局提供了自动折叠约束的功能。之前工作的时候使用 xib 开发部分功能,那时候觉得这个很酷、很方便,不过使用过一段时间,总觉得缺了点什么。因此在开发TMMasonryExtends
时,除了支持自动折叠约束值,还支持针对 view 显式/隐藏状态设置不同的约束。
TMMasonryExtends
的第一个版本也因为受 UIView-FDCollapsibleConstraints 的设计影响,虽然实现的结果一样,但是对外的接口并不是这样,跟 UIView-FDCollapsibleConstraints 差不多,也是记录需要变更的约束,在需要的时候自动处理变更。在实际使用时,发现经常需要定义额外的 MasConstraint 变量,也不够Masonry
化,因此重新设计了现在的接口。理想状态下,我们希望是设计好了再下手,现实总是需要我们走一些弯路,自己挖下的坑要自己填呀,又花了不少时间修改项目代码。
办法总比问题多,关键是要能发现问题,并解决问题,实在搞不定,抛出问题也行呀。