UITableView 選中cell 動畫(一)-----旋轉動畫
阿新 • • 發佈:2019-01-09
今天老李問我,天天cell,天天cell,真沒意思,想想也是,早幾年,精通個tableview就差不多可以找到不錯的工作了,到現在,天天面對的還是tableView,collectionView,覺得不弄點花樣真的沒啥意思了,突然想寫個庫,方便自己也方便大家嘛,寫完了會放到這裡,給大家隨便用,但是剛著手,沒寫完呢,今天就是記錄下幾個系統給的cell動畫。
日常兩種方式。
第一種是老的(個人感覺淘汰了好久了)
[UIView beginAnimation:]和[UIView commitAnimation]
直接上程式碼了
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [UIView beginAnimations:@"JackYangAnimationId" context:nil];//開始發起動畫 [UIView setAnimationDuration:0.5f];//動畫時間 [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];//動畫曲線 [UIView setAnimationRepeatAutoreverses:NO];//是否重複 [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:[tableView cellForRowAtIndexPath:indexPath] cache:YES];//動畫樣式 以及 對於哪個view來說,這裡自然對於選中的cell來說了 [UIView commitAnimations];//提交動畫 [self performSelector:@selector(somethingYouWillDo) withObject:nil afterDelay:0.5f];//這裡是等動畫執行完畢之後,你可以在somethingYouWillDo //或者 直接使用GCD 的延時函式 dispatch_after 兩種都可以,目的是等動畫結束在執行操作 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //裡面執行你要操作 }); }
或者,直接上第二種block動畫,這種動畫是現在蘋果主要推崇的
<span style="font-size:24px;">[UIView transitionWithView:[tableView cellForRowAtIndexPath:indexPath] duration:0.8 options:UIViewAnimationOptionCurveEaseInOut animations:^{ [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:[tableView cellForRowAtIndexPath:indexPath] cache:YES]; } completion:^(BOOL finished) { //這裡填寫你想做完動畫後的操作。 }];</span>
其中 setAnimationTransition:的引數就是 幾個 系統自帶的動畫模式
<span style="font-size:24px;">typedef NS_ENUM(NSInteger, UIViewAnimationTransition) { UIViewAnimationTransitionNone, UIViewAnimationTransitionFlipFromLeft, UIViewAnimationTransitionFlipFromRight, UIViewAnimationTransitionCurlUp, UIViewAnimationTransitionCurlDown, };</span>
就這些了,系統給的終究還是太low了,明天開始上程式碼,寫了兩個效果了,註釋對我來說真的是受罪、