iOS TableView給力動畫的簡單實(shí)現(xiàn)(一)

前言:

之前看見過很多動畫, 都非常炫酷, 所以想弄一些比較簡單的動畫, 以后再項(xiàng)目中可能會用到, 以后還會持續(xù)更新類似的動畫效果!

GitHub下載地址: iOS TableView給力動畫的簡單實(shí)現(xiàn)(一)

效果圖:

效果圖1.gif

效果圖2.gif

效果圖3.gif

代碼實(shí)現(xiàn)

首先我們要在cell中實(shí)現(xiàn)一個(gè)方法:

+ (instancetype)cellFromXib:(UITableView *)tableView cellAnchorPoint:(CGPoint)cellAnchorPoint angle:(CGFloat)angle;
{
    LRAnimationCell *cell = [tableView dequeueReusableCellWithIdentifier:LRCellId];
    
    if (!cell) {
        
        cell = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject];
    }
    //動畫設(shè)置
    CATransform3D transform = CATransform3DMakeRotation(angle, 0.0, 0.5, 0.3);
   
    transform.m34 = -1.0/500.0; // 設(shè)置透視效果
    
    cell.layer.transform = transform;
    //錨點(diǎn)
    cell.layer.anchorPoint = cellAnchorPoint;

    [UIView animateWithDuration:0.6 animations:^{
        cell.layer.transform = CATransform3DIdentity;
    }];
    
    return cell;
}

我們來簡單解釋下transform.m34 = -1.0/500.0;屬性的設(shè)置
CATransform3D

// m34:實(shí)現(xiàn)透視效果(意思就是:近大遠(yuǎn)小), 它的值默認(rèn)是0, 這個(gè)值越小越明顯
/* Homogeneous three-dimensional transforms. */
 struct CATransform3D
     {
     CGFloat m11, m12, m13, m14;
     CGFloat m21, m22, m23, m24;
     CGFloat m31, m32, m33, m34;
     CGFloat m41, m42, m43, m44;
     };
     typedef struct CATransform3D CATransform3D;

我們要在ViewController中添加幾個(gè)屬性:

@property (nonatomic, assign) CGFloat lastScrollOffset;
/**設(shè)置cell角度 */
@property (nonatomic, assign) CGFloat angle;
/**設(shè)置cell錨點(diǎn) */
@property (nonatomic, assign) CGPoint cellAnchorPoint;

在TableView的代理中實(shí)現(xiàn)+ (instancetype)cellFromXib:(UITableView *)tableView cellAnchorPoint:(CGPoint)cellAnchorPoint angle:(CGFloat)angle;方法:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    LRAnimationCell *cell = [LRAnimationCell cellFromXib:tableView cellAnchorPoint:_cellAnchorPoint angle:_angle];
    cell.backgroundImage.image = LRGetImage(indexPath.row + 1);
 return cell;
}

最后實(shí)現(xiàn)<UIScrollViewDelegate>代理方法, 這個(gè)方法主要就是監(jiān)聽TableView往上拖動還是往下拖動,目的就是實(shí)現(xiàn)動畫的協(xié)調(diào)性,看著更和諧一些!

//滾動監(jiān)聽
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView != self.tableView) return;
    
    CGFloat y = scrollView.contentOffset.y;
    
    if (y > _lastScrollOffset) {//用戶往上拖動
        // x=0 y=0 左
        // x=1 y=0 -angle 右
        _angle = - kAngle;
        _cellAnchorPoint = CGPointMake(1, 0);
        
    } else {//用戶往下拖動
        // x=0 y=1 -angle 左
        // x=1 y=1 右
        _angle =  - kAngle;
        _cellAnchorPoint = CGPointMake(0, 1);
    }
    //存儲最后的y值
    _lastScrollOffset = y;
    
}
動畫的方向需要根據(jù)自己喜好去設(shè)置:
 x,y值為:  _cellAnchorPoint = CGPointMake(x, y);
 -angle值為:  _angle =  - kAngle;

//用戶往下拖動時(shí)候動畫出現(xiàn)的初始位置:
 左邊位置:  x=0 y=1 -angle 
 右邊位置: x=1 y=1 

//用戶往上拖動時(shí)候動畫出現(xiàn)的初始位置:
  左邊位置: x=0 y=0 
  右邊位置: x=1 y=0 -angle 

//在中心點(diǎn)翻轉(zhuǎn)設(shè)置:
  x=0.5 y=0.5 

以上都是效果圖1的效果, 再來看看效果圖2和3:

下面的代碼實(shí)現(xiàn)是獨(dú)立的, 跟效果圖1完全是分開實(shí)現(xiàn)的, 大家可以拿出去單獨(dú)使用!

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
        CATransform3D transform = CATransform3DIdentity;
        transform = CATransform3DRotate(transform, 0, 0, 0, 1);//漸變
        transform = CATransform3DTranslate(transform, -200, 0, 0);//左邊水平移動
//        transform = CATransform3DScale(transform, 0, 0, 0);//由小變大
    
        cell.layer.transform = transform;
        cell.layer.opacity = 0.0;
    
        [UIView animateWithDuration:0.6 animations:^{
            cell.layer.transform = CATransform3DIdentity;
            cell.layer.opacity = 1;
        }];
}

相關(guān)文章:
iOS TableView滾動時(shí)的視覺差效果
iOS (高仿印物App)TableView給力動畫的簡單實(shí)現(xiàn)(二)

看起來還是很簡單的, 如果喜歡的小伙伴請點(diǎn)一個(gè)贊吧,歡迎留言補(bǔ)充與給出不足之處!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朋其,一起剝皮案震驚了整個(gè)濱河市王浴,隨后出現(xiàn)的幾起案子脆炎,更是在濱河造成了極大的恐慌,老刑警劉巖氓辣,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秒裕,死亡現(xiàn)場離奇詭異,居然都是意外死亡钞啸,警方通過查閱死者的電腦和手機(jī)几蜻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來体斩,“玉大人梭稚,你說我怎么就攤上這事⌒醭常” “怎么了弧烤?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹬敲。 經(jīng)常有香客問我暇昂,道長,這世上最難降的妖魔是什么粱栖? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任话浇,我火速辦了婚禮脏毯,結(jié)果婚禮上闹究,老公的妹妹穿的比我還像新娘。我一直安慰自己食店,他們只是感情好渣淤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吉嫩,像睡著了一般价认。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上自娩,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天用踩,我揣著相機(jī)與錄音,去河邊找鬼忙迁。 笑死脐彩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的姊扔。 我是一名探鬼主播惠奸,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恰梢!你這毒婦竟也來了佛南?” 一聲冷哼從身側(cè)響起梗掰,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嗅回,沒想到半個(gè)月后及穗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绵载,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年拥坛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尘分。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猜惋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出培愁,到底是詐尸還是另有隱情著摔,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布定续,位于F島的核電站谍咆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏私股。R本人自食惡果不足惜摹察,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倡鲸。 院中可真熱鬧供嚎,春花似錦、人聲如沸峭状。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽优床。三九已至劝赔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胆敞,已是汗流浹背着帽。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留移层,地道東北人仍翰。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像幽钢,于是被迫代替她去往敵國和親歉备。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 前言: 之前看見過很多動畫, 都非常炫酷, 所以想弄一些比較簡單的動畫, 以后再項(xiàng)目中可能會用到, 以后還會持續(xù)更...
    _山人自有妙計(jì)閱讀 1,030評論 0 6
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議匪燕。它實(shí)...
    香橙柚子閱讀 23,733評論 8 183
  • 企業(yè)的學(xué)習(xí)社區(qū)游戲化有多遠(yuǎn)蕾羊? 【一】 “潛伏”手游感受游戲化 羅胖在2017年跨年演講中有一個(gè)估計(jì)喧笔,那就是,玩家所...
    拿鐵Coco閱讀 287評論 0 0
  • 我知道我的拖延癥是無可救藥的龟再,上午拖下午书闸,下午就會拖到明天,中間放個(gè)假利凑,于是下禮拜才能實(shí)行浆劲!
    鬼哥哥閱讀 171評論 0 1
  • 我離老師給出的主題似乎越來越遠(yuǎn),我只寫我能想到的東西哀澈。 拿到這本書牌借,感覺就像手里拿著一盞燈了,在前進(jìn)的路上可以看清...
    by_10閱讀 272評論 0 0