2012-02-03 52 views
6

我有2個部分,在第一部分1行,行的針對第二部分可變量的一個UITableView。當用戶滾動表最多(手指向上移動),則tableview中做它的默認的東西,但是當用戶在UITableView的和向下滾動(手指向下移動)的頂部,那麼它應該看起來像在第一個單元格第一部分高度隨着用戶向下滾動而增加(並且釋放觸摸會將該行的高度改回到其原始高度100)。我試圖更改特定的UITableViewCell行高度,同時滾動一個UITableView

-(void)scrollViewDidScroll:(UIScrollView*)scrollView{ 
    if(scrollView.contentOffset.y < 0){ 
     [mainTable reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection: 0]] withRowAnimation:UITableViewRowAnimationNone]; 
    } 
} 

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{ 
    if(indexPath.section == 0 && tableView.contentOffset.y < 0){ 
     return -tableView.contentOffset.y+100;//Default height is 100 
    } 
} 

但reloadRows方法重置contentOffset爲0,所以當我拉下的tableview只是斷斷續續。這似乎是,如果這也不行,那我就必須寫一個UIScrollView的一切,好像沒有可回收的細胞一個巨大的痛苦。

沒有任何人有什麼建議嗎?

回答

9

無需重新加載行,我只是直接改變了框架。確保設置cell.layer.masksToBounds = YES,並使單元格中的子視圖大於原始單元格高度。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    if (mainTable.contentOffset.y < 0) { 
     UITableViewCell *cell = [mainTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; 
     float rawr = mainTable.contentOffset.y; 
     cell.frame = CGRectMake(cell.frame.origin.x, rawr, cell.frame.size.width, 100-rawr); 
    } 
} 
相關問題