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

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


   咱們要的效果大概就是以下效果:spa


   技術分享


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


    咱們該如何實現這個效果呢?咱們主要須要使用如下這兩個方法:orm

    

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


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


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

     咱們在第一個方法中,須要實現一些咱們想要的高度:it

     

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

     

     而在第二個方法中,咱們控制當cell被點擊後咱們全部但願發生的事情,而且咱們今天想要探究的「大明星代碼」也在其中~~table

      

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
	
	[tableView deselectRowAtIndexPath:indexPath animated:TRUE];
	
	//獲取當前indexPath並判斷對應的Cell是否被選中
    
    
    //最神奇的地方!!
	[tableView beginUpdates];
	[tableView endUpdates];
}

     那麼爲何在這裏會發生神奇的事情呢?class

     讓咱們來重點關注這行代碼:[tableView beginUpdates];date

     文檔中對這行代碼的解釋爲讓TableView產生插入,刪除或從新加載cellselect

      看到這裏你們應該就恍然大悟了吧?原來當咱們點擊了一個cell後咱們至關於從新加載了一遍咱們的tableview,可是卻和[tableView reloadata]是徹底不同的風格,reloadData這個方法會讓tableView總體從新加載,至關因而做用在tableView上,而beginUpdates只是做用在cell上!

相關文章
相關標籤/搜索