2011-05-02 27 views
0

我想這是非常基本的,但我想知道是否有一種簡單的方法來將整個NIB動畫化到屏幕上......來自右側。理想情況下,我希望它在停止時反彈一點(例如,如果NIB應該滾動到位置X = 0,我想在返回0之前稍微消極一點)。如何動畫一個NIB,使其從右側進入屏幕

這是我到目前爲止有:

      [UIView animateWithDuration:0.5 
              delay:0 
             options:UIViewAnimationOptionCurveEaseIn 
             animations:^{ 


              TabsEdit *tEdit = [[TabsEdit alloc] initWithNibName:@"TabsEdit" bundle:nil]; 
              self.tabsEdit = tEdit; 
              [self.view addSubview:tEdit.view]; 
              [tEdit release]; 



             } 
             completion:^(BOOL finished){ 

             } 

有沒有簡單的解決辦法,否則我將需要在NIB每一個元素動畫進入視線,然後加入我的小反彈的效果呢?

對於如何有效實現此目標的任何建議,我將不勝感激。

回答

1

爲了獲得更復雜的動畫(如果你想有更多的片段),你應該到CoreAnimation圖層並定義關鍵幀。否則有一系列嵌入的animateWithDuration/Completions,每個人做一個不同部分的反彈)。如果一個視圖的所有元素都是子視圖,那麼當視圖被動畫時,它的子視圖將會出現。

+0

謝謝。就像我在IB中做的NIB一樣,我想所有的元素都是視圖的子視圖。但是,我將如何獲得非常基本的動畫,例如,將NIB從X = 320移動到X = 0?對不起,如果這是基本的,但我試過tabsEdit.transform = CGAffineTransformMakeTranslation(-320,0);那並沒有真正的工作。 – 2011-05-02 21:17:07

+1

只需將框架設置爲您希望它在動畫結尾處結束的位置:view.frame = CGRectMake(0.0f,view.frame.origin.x,.view.frame.size .width,view.frame.size.height);下面的例子...不反彈只是一個舉動 – 2011-05-02 22:24:59

1

一動就重複跳動。

[UIView beginAnimations:@"move" context:nil]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationDuration:0.25]; 
    [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
    if(movingIn){ 
     view.frame = CGRectMake(0.0f, view.frame.origin.x, .view.frame.size.width, view.frame.size.height); 
    }else{ 
     view.frame = CGRectMake(320.0f, view.frame.origin.x, .view.frame.size.width, view.frame.size.height); 
    } 

    [UIView commitAnimations]; 
相關問題