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

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

内容简介:首先,原有的骨架库实现的大概思路: 如果你开启了动画, 框架会根据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;
复制代码

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

查看所有标签

猜你喜欢:

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

Artificial Intelligence

Artificial Intelligence

Stuart Russell、Peter Norvig / Pearson / 2009-12-11 / USD 195.00

The long-anticipated revision of this #1 selling book offers the most comprehensive, state of the art introduction to the theory and practice of artificial intelligence for modern applications. Intell......一起来看看 《Artificial Intelligence》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换