2011-09-28 51 views
0

我试图做一个卡片翻转动画...但没有任何反应。iPhone试图使用块动画来模拟卡片翻转,但没有任何反应,没有动画

这就是我所做的 1.创建一个容器视图,以保存两个视图的动画。 2.创建第一个视图。 3.将其添加到容器。 4.创建第二视图 3.启动动画块,beginAnimations 4.呼叫setAnimationTransition放入视图容器 5.添加所述第二视图的视图容器 6.提交动画,

我的代码

// create container view 
CGRect viewRect = CGRectMake(10, 10, 100, 100); 
UIView* myView = [[UIView alloc] initWithFrame:viewRect]; 

// create 2 viues to flip between for animation 
UIImage *i= [ UIImage imageNamed : @"card1.jpg"]; 
UIImageView *topCard=[ [UIImageView alloc] initWithImage: i ]; 
topCard.frame= CGRectMake(0,0,100,100); 
[myView addSubview:topCard]; 
[self.view addSubview:myView]; 

i= [ UIImage imageNamed : @"card2.jpg"]; 
UIImageView *butCard=[ [UIImageView alloc] initWithImage: i ]; 
butCard.frame= CGRectMake(0,0,100,100); 

// set up the animation 
[UIView beginAnimations:@"Flip Top Card" context:nil]; 
[UIView setAnimationDuration:1]; 
[UIView setAnimationRepeatCount:0]; 
[UIView setAnimationRepeatAutoreverses:NO]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut ]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES]; 
[myView addSubview:butCard]; 

// start the animation 
[UIView commitAnimations]; 

-Ted

+0

要解决这个问题,您可能必须使用关键帧动画或多个动画。请记住,当卡片翻转一半时,你想改变一些东西。 –

回答

6

如果这是iOS 4.0或更高版本,你可以这样做:

[UIView transitionWithView:myView 
        duration:0.3f 
        options:UIViewAnimationOptionTransitionFlipFromLeft 
       animations:^(void) { 
        self.topCardIsShown = !self.topCardIsShown; 
        self.topCard.hidden = !self.topCardIsShown; 
        self.butCard.hidden = self.topCardIsShown; 
       } 
       completion:^(BOOL finished) { 
        // nothing 
       }]; 

这假设您已将两个卡片视图添加到myView并且已将@property(nonatomic, assign) BOOL topCardIsShown;添加到您的班级。

+0

如果你不想要属性,你可能也可以“重用”图像视图的“hidden”属性。 'self.topCard.hidden =!self.topCard.hidden; self.butCard.hidden = self.topCard.hidden;'但这可能有点神秘。 –