本文主要解决下面这一个问题:
开发者如何才能准确知道动画元素的下标?
_tableView.tabAnimated.adjustBlock = ^(TABComponentManager * _Nonnull manager) {
manager.animation(1).down(3).height(12);
manager.animation(2).height(12).reducedWidth(90);
manager.animation(3).down(-5).height(12).radius(0.).reducedWidth(-20);
};
即 animation(x)
其中的x的数值是几?
TABAnimated采取递归的方式,取得当前视图单元的子视图集合。
- 对于纯代码布局,下标的顺序就是addSubView的顺序
- 对于xib布局,下标顺序是关联变量的顺序。
- 对于xib布局特别坑,如果习惯不是特别好,那么关联的组件顺序开发者自己根本就不知道,只能一个一个尝试。
- 对于纯代码布局,如果视图数量稍微多一点,就要打开对应的文件去看,然后按照规则得出顺序。
起初,我也意识到了这个问题,但思路一直是如何调整动画元素的顺序,让开发者很容易就能准确判断出顺序,然后对应修改。
期间,也有想过根据动画元素的frame,按照从左往右,从上至下动态调整顺序,但是还是觉得有点蠢,所以并没有推出。
作者自己在集成中也始终觉得这是一个很难受的点。前几天突然顿悟,自己以前太蠢啦,既然已经知道下标了,为什么不体现出来呢?
如下图所示:
将版本新增的全局属性openAnimationTag
属性设置为YES,
会将所有元素自动添加红色的角标,角标就是动画元素对应的下标。
如此以来,开发者不需要在纠结哪个元素对应是哪个下标了。
例如:
调整红色1号的宽度为20,高度为10,圆角为3
view.animation(1).width(20).height(10).radius(3);
以前把时间都浪费在红色1号的下标是哪个了,现在无需纠结,一眼看过去,哪个对哪个很清晰。 想要调整红色1号,那就是view.animation(1),屡试不爽。
注意:为了防止开发者粗心,在生产环境下没有及时将属性openAnimationTag
改回去,同时减少生产环境不必要的判断
,无论openAnimationTag
的值为多少,红色角标仅会在debug模式下生成。
对于特别复杂的视图,有的元素可能会堆在一起,目前没有提供很好的做法,建议通过实现原理定位下标。