前言
UITableView 是iOS日常開發中經常使用到的控制元件。tableView的普通展示效果比較生硬,為了提升APP的活力,提升體驗,我們可以對根據tableView的特點,操作Cell實現一些動畫效果。
我寫了一個簡單的動畫集 TableViewAnimationKit,只需要一行程式碼就可以讓tableView實現動畫
目前有大概10個動畫,後續會優化增加。
原始碼放到Github上: TableViewAnimationKit歡迎大家star、下載,交流溝通。
正文
一、效果展示:
二、使用方法
TableViewAnimationKit呼叫各個動畫的方法都為類方法,只需一行程式碼就可以呼叫。
eg:
[TableViewAnimationKit shakeAnimationWithTableView:tableView];複製程式碼
TableViewAnimationKit提供的動畫類方法
+ (void)moveAnimationWithTableView:(UITableView *)tableView;
+ (void)alphaAnimationWithTableView:(UITableView *)tableView;
+ (void)fallAnimationWithTableView:(UITableView *)tableView;
+ (void)shakeAnimationWithTableView:(UITableView *)tableView;
+ (void)overTurnAnimationWithTableView:(UITableView *)tableView;
+ (void)toTopAnimationWithTableView:(UITableView *)tableView;
+ (void)springListAnimationWithTableView:(UITableView *)tableView;
+ (void)shrinkToTopAnimationWithTableView:(UITableView *)tableView;
+ (void)layDonwAnimationWithTableView:(UITableView *)tableView;
+ (void)roteAnimationWithTableView:(UITableView *)tableView;複製程式碼
三、原始碼講解
先舉其中一個動畫效果為例子:
動畫效果為Cell左右各自插入。
實現程式碼很簡單如下:
+ (void)shakeAnimationWithTableView:(UITableView *)tableView {
NSArray *cells = tableView.visibleCells;
for (int i = 0; i < cells.count; i++) {
UITableViewCell *cell = [cells objectAtIndex:i];
if (i%2 == 0) {
cell.transform = CGAffineTransformMakeTranslation(-XS_SCREEN_WIDTH,0);
}else {
cell.transform = CGAffineTransformMakeTranslation(XS_SCREEN_WIDTH,0);
}
[UIView animateWithDuration:0.4 delay:i*0.03 usingSpringWithDamping:0.75 initialSpringVelocity:1/0.75 options:0 animations:^{
cell.transform = CGAffineTransformIdentity;
} completion:^(BOOL finished) {
}];
}
}複製程式碼
主要思路為:
獲得tableview的visibleCells
陣列,進行遍歷,對每個執行動畫,不同cell的執行時間、方向有所差異,一起構成整個動畫。
四、其他一些動畫效果
後語
原始碼放到Github上: TableViewAnimationKit有需要的同學可以下載、star,目前只算Demo級別,後面會繼續優化、增加動畫。如有什麼想法,歡迎進行技術交流。