2013-07-10 75 views
0

我有一個UIViewController拿着UITableView拉伸它的所有區域。在酒吧按鈕上單擊我試圖縮小並移動和縮小UITableView以爲屏幕頂部移動的UIView留出空間。用動畫移動UiTableView

我重視你,項目project

我管理移動紅色看法就好了,但與移動和stimulatenously調整UITableView的問題。

這是我的動畫,導致問題。

-(void)extendTableView 
{ 
    if (searchPanel) {   
     objectsTableView.frame = CGRectMake(objectsTableView.frame.origin.x, 0, objectsTableView.frame.size.width, 100); 
     CATransition *animation = [CATransition animation]; 
     [animation setDuration:0.5]; 
     [animation setType:kCATransitionPush]; 
     [animation setSubtype:kCATransitionFromTop]; 
     [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
     [animation setDelegate: self]; 
     [animation setValue:ANIMATION_EXTEND_TABLE_VIEW forKey:KEY_ANIMATION]; 
     [objectsTableView.layer addAnimation:animation forKey:ANIMATION_EXTEND_TABLE_VIEW]; 

    } 

-(void)shrinkTableView 
{ 
    if (searchPanel) { 
     objectsTableView.frame = CGRectMake(objectsTableView.frame.origin.x, 100, objectsTableView.frame.size.width, 100); 
     CATransition *animation = [CATransition animation]; 
     [animation setDuration:0.5]; 
     [animation setType:kCATransitionPush]; 
     [animation setSubtype:kCATransitionFromBottom]; 
     [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
     [animation setDelegate: self]; 
     [animation setValue:ANIMATION_SHRINK_TABLE_VIEW forKey:KEY_ANIMATION]; 
     [objectsTableView.layer addAnimation:animation forKey:ANIMATION_SHRINK_TABLE_VIEW]; 
    } 
} 

什麼是正確的方法來實現呢?

+0

什麼是移動和調整大小的UITableView當你有問題? – LuisCien

+0

表格調整爲不需要的措施。如果我修改框架,所以措施很好,那麼動畫很奇怪 –

回答

2

這完美的作品

-(void)extendTableView 
    { 
     if (searchPanel) { 
      CGRect screenRect = [[UIScreen mainScreen] bounds]; 
      [UIView beginAnimations:nil context:nil]; 
      [UIView setAnimationDuration:0.5]; 
      objectsTableView.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height); 
      [UIView commitAnimations]; 
     } 

    } 

-(void)shrinkTableView 
{ 
    if (searchPanel) { 
     CGRect screenRect = [[UIScreen mainScreen] bounds]; 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.5]; 
     objectsTableView.frame = CGRectMake(0, 100, screenRect.size.width, screenRect.size.height -100); 
     [UIView commitAnimations]; 
    } 
}