原生骨架库模版功能上线,零耦合。

栏目: IOS · 发布时间: 6年前

内容简介:首先,原有的骨架库实现的大概思路: 如果你开启了动画, 框架会根据view内的所有subViews的位置,映射出一组一模一样的CALayer动画,并进行管理。那么模版功能特别适合你。

前文章地址

首先,原有的骨架库实现的大概思路: 如果你开启了动画, 框架会根据view内的所有subViews的位置,映射出一组一模一样的CALayer动画,并进行管理。

目录

  • 技术瓶颈
  • 模版功能 - 展示
  • 模版功能 - 使用方式
  • 模版功能 - 其他细节

技术瓶颈

  1. 如果使用约束进行布局,例如知名的第三方库Masonry布局,大部分只需要2个约束就可以很好地布局, 但是, 2个约束就可以很好地布局是在数据已经填充的情况下,如果没有数据,则位置信息是完全不对

  2. 本框架采用的是AOP编程,最初地思想是开发者尽量不需要动自己原有的代码,就可以完成动画的设置。 但是,当你使用后会发现,会于原代码产生一定耦合,不会利于他人阅读和维护。

  3. 我们将骨架展示给用户时,大部分情况是这样的:

  • 可能并不需要很复杂的view,完全展示给用户
  • 可能是很个性化的view(因为映射出的动画,并不能保证好看,又需要调试)
  • 可能是通用的view,很多地方共用一个就行了

那么模版功能特别适合你。

模版功能 - 展示

原生骨架库模版功能上线,零耦合。

交流群

TABAniamted交流群:304543771 提出你的意见

模版功能 - 使用方式

模版功能是库的一个新功能,并不是一个新的库。

  1. 模版功能只针对常用的表格组件。
  2. 开启和结束动画的方式不变
  3. 唯一的改变就是在表格初始化的时候,注册模版,如下
- (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;
}

复制代码

模版功能 - 其他细节

  1. cell模版需要自己写,布局写死,想什么样就什么样 但需要继承自 TABBaseCollectionViewCellTABBaseTableViewCell
  2. 以table举例, TABBaseTableViewCell 中的 cellHeight 方法, 需要你在子类重写,并指定数值, 这个返回值就是改模版在动画是展示的高度
+ (NSNumber *)cellHeight {
    return [NSNumber numberWithFloat:10+headImgWidth+5+80+10+imgWidth];
}
复制代码
  1. 模版功能依旧根据 animationType 设置动画类型
  2. 使用 isUseTemplate 属性切换为模版模式, 可以在动画开启前随意切换。
  3. 模版中的组件,使用经典类型的动画,依旧需要指定动画类型
  4. 提供两种方式注册模版,一个section和多section, 多个section是以一个class数组形式储存。 言外之意,数组中的模版类和section一一对应。
- (void)registerTemplateClassArray:(NSArray <Class> *)classArray;
复制代码

以上所述就是小编给大家介绍的《原生骨架库模版功能上线,零耦合。》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

MySQL性能调优与架构设计

MySQL性能调优与架构设计

简朝阳 / 2009-6 / 59.80元

《MySQL性能调优与架构设计》以 MySQL 数据库的基础及维护为切入点,重点介绍了 MySQL 数据库应用系统的性能调优,以及高可用可扩展的架构设计。 全书共分3篇,基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识。性能优化篇从影响 MySQL 数据库应用系统性能的因素开始,针对性地对各个影响因素进行调优分析。如 MySQL Schema 设计的技巧......一起来看看 《MySQL性能调优与架构设计》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具