前言前文章地址首先,原有的骨架库实现的大概思路:如果你开启了动画,框架会根据view内的所有subViews的位置,映射出一组一模一样的CALayer动画,并进行管理。目录技术瓶颈模版功能 - 展示模版功能 - 使用方式模版功能 - 其他细节技术瓶颈如果使用约束进行布局,例如知名的第三方库Masonry布局,大部分只需要2个约束就可以很好地布局。但是, 2个约束就可以很好地布局是在数据已经填充的前提下,如果没有数据,则frame信息是完全不对。因此,映射不出合理的动画。本框架采用的是AOP编程,最初地思想是开发者尽量不需要动自己原有的代码,就可以完成动画的设置。但是,当你使用后会发现,会于原代码产生一定耦合,不会利于他人阅读和维护。我们将骨架展示给用户时,大部分情况是这样的:可能并不需要很复杂的view,子view并不需要完全展示给用户可能是很个性化的view(因为映射出的动画,并不能保证好看,又需要调试)可能是通用的view,很多地方共用一个就行了那么模版功能特别适合你。模版功能 - 展示交流群TABAniamted交流群:304543771提出你的意见模版功能 - 使用方式模版功能是库的一个新功能,并不是一个新的库。模版功能只针对常用的表格组件。开启和结束动画的方式不变唯一的改变就是在表格初始化的时候,注册模版,如下- (UICollectionView *)collectionView { if (!_collectionView) { UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, kNavigationHeight, kScreenWidth, kScreenHeight-kNavigationHeight) collectionViewLayout:layout]; _collectionView.backgroundColor = [UIColor whiteColor]; _collectionView.dataSource = self; _collectionView.delegate = self; _collectionView.animatedDelegate = self; _collectionView.showsHorizontalScrollIndicator = NO; _collectionView.showsVerticalScrollIndicator = NO; // 注册模版 [_collectionView registerTemplateClassArray:@[[TemplateCollectionViewCell class], [TemplateSecondCollectionViewCell class]]]; } return _collectionView;}模版功能 - 其他细节cell模版需要自己写,布局写死,想什么样就什么样但需要继承自TABBaseCollectionViewCell或TABBaseTableViewCell以table举例,TABBaseTableViewCell中的cellHeight方法,需要你在子类重写,并指定数值,这个返回值就是改模版在动画是展示的高度+ (NSNumber *)cellHeight { return [NSNumber numberWithFloat:10+headImgWidth+5+80+10+imgWidth];}模版功能依旧根据animationType设置动画类型使用isUseTemplate属性切换为模版模式,可以在动画开启前随意切换。模版中的组件,使用经典类型的动画,依旧需要指定动画类型提供两种方式注册模版,一个section和多section,多个section是以一个class数组形式储存。言外之意,数组中的模版类和section一一对应。- (void)registerTemplateClassArray:(NSArray <Class> *)classArray;最后如有问题,加入交流群:304543771github地址:https://github.com/tigerAndBu…