[iOS]在tableview中用動畫效果改變cell的高度

來源:互聯網
上載者:User

標籤:tableviewcell   動畫   高度   

   我們經常會碰到一些需要動畫的地方,比如在TOP的發帖頁面中,當我們選中一個文本編輯的cell時,cell的高度會動態改變。


   我們要的效果大概就是如下效果:


   


    當我們選擇一個cell的時候,我們就要改變它的高度,並且以動畫的形式。


    我們該如何?這個效果呢?我們主要需要使用以下這兩個方法:

    

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

     兩個方法分別控制cell的高度和cell被選中之後會發生的事情。

     我們在第一個方法中,需要實現一些我們想要的高度:

     

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {if(該indexPath被選中) {return 60 * 2.0;}return 60;}
     

     而在第二個方法中,我們控制當cell被點擊後我們所有希望發生的事情,並且我們今天想要探究的“大明星代碼”也在其中~~

      

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {[tableView deselectRowAtIndexPath:indexPath animated:TRUE];//擷取當前indexPath並判斷對應的Cell是否被選中            //最神奇的地方!![tableView beginUpdates];[tableView endUpdates];}
     那麼為什麼在這裡會發生神奇的事情呢?

     讓我們來重點關注這行代碼:[tableViewbeginUpdates];

     文檔中對這行代碼的解釋為讓TableView產生插入,刪除或重新載入cell

      看到這裡大家應該就恍然大悟了吧?原來當我們點擊了一個cell後我們相當於重新載入了一遍我們的tableview,但是卻和[tableView reloadata]是完全不一樣的風格,reloadData這個方法會讓tableView整體重新載入,相當於是作用在tableView上,而beginUpdates只是作用在cell上!


      好了,大家應該已經可以看到效果了,如果還是希望可以讀到我們全部的代碼,可以通過以下連結擷取~~


    http://www.locassa.com/wp-content/uploads/2011/05/AnimatedTableViewCell.zip

[iOS]在tableview中用動畫效果改變cell的高度

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.