2011-05-02 70 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]; 
相关问题