如何为NIB设置动画,使其从右侧进入屏幕

时间:2011-05-02 20:53:12

标签: iphone objective-c cocoa-touch uiviewanimation

我想这是非常基本的,但我想知道是否有一种简单的方法可以将整个NIB动画到屏幕上...来自右边。理想情况下,我希望它一旦停止就反弹(即如果NIB应该滚动到位置X = 0,我想在回到0之前略微消极)。

这是我到目前为止所做的:

                         [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中的每个元素设置为视图,然后添加我的小反弹效果?

我很感激有关如何有效实现这一目标的任何建议。

2 个答案:

答案 0 :(得分:1)

要获得更复杂的动画(如果你想要更多的段到bouce),你应该去CoreAnimation层并定义关键帧。否则有一系列嵌入式animateWithDuration / Completions,每个都执行反弹的不同部分。如果视图的所有元素都是子视图,那么在对视图进行动画处理时,其子视图将会跟随。

答案 1 :(得分: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];