Day13 - tableViewCell 動(dòng)畫(huà)顯示

效果圖

最終效果如下

代碼結(jié)合了day11的學(xué)習(xí)內(nèi)容

1、UI布局

在ViewController加入導(dǎo)航欄

添加導(dǎo)航欄

<br />
然后拖入tableView

設(shè)置約束

<br />
拖入一個(gè)tableViewCell

拖入cell

<br />
選中tableViewCell

設(shè)置屬性

<br />
創(chuàng)建一個(gè)類(lèi)繼承UITableViewCell類(lèi)名:FirstTableViewCell
在進(jìn)入storyboard中選擇Cell

設(shè)置關(guān)聯(lián)

<br />
后面的ViewController和這個(gè)類(lèi)似碰声,不做介紹了绑雄。

<br />

2、實(shí)現(xiàn)必要的代理方法

定義屬性:記得把tableView拖入到ViewController中

@IBOutlet weak var tableView: UITableView!
private lazy var data : NSArray = ["測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)"]

<br />
代理方法

 // MARK: - Table view data source
    
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }
    
    
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("firstCell", forIndexPath: indexPath) as! FirstTableViewCell
        
        cell.textLabel?.text = data[indexPath.row] as? String
        
        return cell
    }

<br />
修改Cell背景顏色

 private func changeColor(indexPath:NSIndexPath) -> UIColor{
        let green = CGFloat(indexPath.row) / CGFloat(data.count)
        return UIColor(red: 1, green: green, blue:  1, alpha: 1)
    }
    
    func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        cell.backgroundColor = changeColor(indexPath)
    }

<br />
設(shè)置代理

tableView.delegate = self
        tableView.dataSource = self
        
        automaticallyAdjustsScrollViewInsets = false

//class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource

<br />
實(shí)現(xiàn)動(dòng)畫(huà)

 override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        
        
        animationTable()
        
    }
    
    
    private func animationTable(){
        tableView.reloadData()
        
        //獲取可見(jiàn)的cell
        let cells = tableView.visibleCells
        
        //獲取tableview高度
        let height : CGFloat = tableView.bounds.height
        
        //遍歷奥邮,并設(shè)置每個(gè)cell的位置
        for i in cells {
            let cell : UITableViewCell = i as UITableViewCell
            cell.transform = CGAffineTransformMakeTranslation(0, height)
        }
        
        //設(shè)置動(dòng)畫(huà)
        
        var index = 0.0
        
        //遍歷并設(shè)置動(dòng)畫(huà)
        for item in cells {
            let cell : UITableViewCell = item as UITableViewCell
            UIView.animateWithDuration(1.5, delay: 0.05 * index, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: UIViewAnimationOptions.CurveLinear, animations: { 
                cell.transform = CGAffineTransformMakeTranslation(0, 0)
                }, completion: nil)
            index += 1
        }
    }

第二個(gè)頁(yè)面的源碼:附上OC與Swift對(duì)比

//
//  SecondTableViewController.swift
//  TableViewCellAnimation
//
//  Created by ios on 16/9/19.
//  Copyright ? 2016年 ios. All rights reserved.
//

import UIKit

class SecondTableViewController: UITableViewController {
    
    private lazy var data : NSArray = ["測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)","測(cè)試數(shù)據(jù)"]
    
    override func viewDidLoad() {
    
    }
    
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        //開(kāi)始動(dòng)畫(huà)
        animationTable()
    }
    
    
    private func animationTable(){
        tableView.reloadData()
        
        //獲取可見(jiàn)的cell
        let cells = tableView.visibleCells
        //OC
//        NSArray * cells = self.talbeView.visibleCells;
        
        //獲取tableview高度
        let height : CGFloat = tableView.bounds.height
        //OC
//        CGFloat height = self.tableView.bounds.size.height;
        
        //遍歷万牺,并設(shè)置每個(gè)cell的位置
        for i in cells {
            let cell : UITableViewCell = i as UITableViewCell
            cell.transform = CGAffineTransformMakeTranslation(0, -height)
        }
        
        //OC
//        for (UITableViewCell * i in cells) {
//            i.transform = CGAffineTransformMakeTranslation(0, -height);
//        }
        
        //設(shè)置動(dòng)畫(huà)
        
        var index = 0.0
        //OC
//        CGFloat index = 0.0;
        
        //遍歷并設(shè)置動(dòng)畫(huà)
        for item in cells {
            let cell : UITableViewCell = item as UITableViewCell
            UIView.animateWithDuration(1.5, delay: 0.05 * index, usingSpringWithDamping: 0.7, initialSpringVelocity: 0, options: UIViewAnimationOptions.CurveLinear, animations: {
                cell.transform = CGAffineTransformMakeTranslation(0, 0)
                }, completion: nil)
            index += 1
        }
        
        //OC
//        for (UITableViewCell * item in cells) {
//            [UIView animateWithDuration:1.5 delay:index * 0.01 usingSpringWithDamping:0.5 initialSpringVelocity:0 options:UIViewAnimationOptionCurveLinear animations:^{
//                cell.transform = CGAffineTransformMakeTranslation(0, 0)
//                } completion:nil];
//        }
    }

    
    
    
    // MARK: - Table view data source

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return data.count
    }

    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("secondCell", forIndexPath: indexPath) as! SecondTableViewCell

        cell.textLabel?.text = data[indexPath.row] as? String

        return cell
    }
    
    
    private func changeColor(indexPath:NSIndexPath) -> UIColor{
        let green = CGFloat(indexPath.row) / CGFloat(data.count)
        return UIColor(red: 1 - (green), green: green, blue:  1, alpha: 1)
    }
    
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        cell.backgroundColor = changeColor(indexPath)
    }
}

Demo - TableViewCellAnimation

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市洽腺,隨后出現(xiàn)的幾起案子脚粟,更是在濱河造成了極大的恐慌,老刑警劉巖蘸朋,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件核无,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡藕坯,警方通過(guò)查閱死者的電腦和手機(jī)团南,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)噪沙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吐根,你說(shuō)我怎么就攤上這事正歼。” “怎么了拷橘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵局义,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我冗疮,道長(zhǎng)萄唇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任术幔,我火速辦了婚禮另萤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诅挑。我一直安慰自己四敞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布揍障。 她就那樣靜靜地躺著目养,像睡著了一般俩由。 火紅的嫁衣襯著肌膚如雪毒嫡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天幻梯,我揣著相機(jī)與錄音兜畸,去河邊找鬼。 笑死碘梢,一個(gè)胖子當(dāng)著我的面吹牛咬摇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播煞躬,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼肛鹏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了恩沛?” 一聲冷哼從身側(cè)響起在扰,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雷客,沒(méi)想到半個(gè)月后芒珠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搅裙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年皱卓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裹芝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娜汁,死狀恐怖嫂易,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情存炮,我是刑警寧澤炬搭,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站穆桂,受9級(jí)特大地震影響宫盔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜享完,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一灼芭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧般又,春花似錦彼绷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至堕义,卻和暖如春猜旬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倦卖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工洒擦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怕膛。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓熟嫩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親褐捻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子掸茅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,130評(píng)論 30 470
  • 我們?cè)谏弦黄锻ㄟ^(guò)代碼自定義不等高cell》中學(xué)習(xí)了tableView的相關(guān)知識(shí),本文將在上文的基礎(chǔ)上柠逞,利用sto...
    啊世ka閱讀 1,501評(píng)論 2 7
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)昧狮、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62
  • 漯河〈許慎文化園〉 要有多勇敢边苹,才能面對(duì)你……其實(shí)陵且,我一點(diǎn)兒也不喜歡那座城市。可你在那里呀慕购,所以總覺(jué)得那座城市滿(mǎn)是...
    南陽(yáng)雅月閱讀 523評(píng)論 0 1
  • 2015/01/10 我不得不說(shuō)的是——自己太過(guò)放松自己了聊疲。由于這一級(jí)別練習(xí)方式有些變化。自己不太適應(yīng)沪悲。在金銀銅牌...
    蒙奇奇_阿蒙蠻好的閱讀 460評(píng)論 0 2