1. 程式人生 > >UITableView 選中cell 動畫(一)-----旋轉動畫

UITableView 選中cell 動畫(一)-----旋轉動畫

        今天老李問我,天天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了,明天開始上程式碼,寫了兩個效果了,註釋對我來說真的是受罪、