前文章地址ios
首先,原有的骨架庫實現的大概思路: 若是你開啓了動畫, 框架會根據view內的全部subViews的位置,映射出一組如出一轍的CALayer動畫,並進行管理。git
- 技術瓶頸
- 模版功能 - 展現
- 模版功能 - 使用方式
- 模版功能 - 其餘細節
若是使用約束進行佈局,例如知名的第三方庫Masonry佈局,大部分只須要2個約束就能夠很好地佈局, 可是, 2個約束就能夠很好地佈局是在數據已經填充的狀況下,若是沒有數據,則位置信息是徹底不對github
本框架採用的是AOP編程,最初地思想是開發者儘可能不須要動本身原有的代碼,就能夠完成動畫的設置。 可是,當你使用後會發現,會於原代碼產生必定耦合,不會利於他人閱讀和維護。編程
咱們將骨架展現給用戶時,大部分狀況是這樣的:數組
- 可能並不須要很複雜的view,徹底展現給用戶
- 多是很個性化的view(由於映射出的動畫,並不能保證好看,又須要調試)
- 多是通用的view,不少地方共用一個就好了
那麼模版功能特別適合你。bash
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;
}
複製代碼
TABBaseCollectionViewCell
或TABBaseTableViewCell
TABBaseTableViewCell
中的cellHeight
方法, 須要你在子類重寫,並指定數值, 這個返回值就是改模版在動畫是展現的高度+ (NSNumber *)cellHeight {
return [NSNumber numberWithFloat:10+headImgWidth+5+80+10+imgWidth];
}
複製代碼
animationType
設置動畫類型isUseTemplate
屬性切換爲模版模式, 能夠在動畫開啓前隨意切換。- (void)registerTemplateClassArray:(NSArray <Class> *)classArray;
複製代碼
- 若有問題,加入交流羣:304543771
- github地址:https://github.com/tigerAndBull/LoadAnimatedDemo-ios