0

我正在开发 iOS 游戏并且需要自定义动画,所以我正在使用这种方法

    CGRect basketTopFrame = mainScreenView.frame;
basketTopFrame.origin.x = 320;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelay:.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
mainScreenView.frame = basketTopFrame;
[UIView commitAnimations];

在 .h 文件中,我已经像这样声明了 mainScreen

IBOutlet UIView *mainScreenView;

所以在 IB 中,我将 UIView 放在界面的视图中,并将其与 mainScreenView 连接起来

因此,在 mainViewScreen 中,有时视图有时不显示(在第二次尝试时有效)但是当我删除动画代码时它工作得非常好..我不知道发生了什么任何帮助将不胜感激谢谢

编辑这是我添加视图的方式

MainScreen *mainScreen = [[MainScreen alloc]initWithNibName:@"MainScreen" bundle:nil];
[mainScreenView addSubview:mainScreen.view];
4

2 回答 2

0

看起来您正试图将某些内容移出屏幕。更简单的方法是执行此操作

[UIView beginAnimations:@"UIBase Hide" context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationDelay:.5];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
mainScreenView.transform = CGAffineTransformMakeTranslation(320,0); //slide view to the right. 
[UIView commitAnimations];

注意:在 Translation 上使用 320 不会将视图移动到屏幕的第 320 个像素,而是将视图向右移动 320px。因此,如果您的 mainScreenView 位于 origin.x = 100。经过此翻译后,它现在位于 420。

把它移回来做

 self.transform = CGAffineTransformIdentity;
于 2012-05-26T06:55:18.997 回答
0

我在一个沙盒项目中尝试过,这对我有用:

- (IBAction)buttonTouched:(id)sender {
    myView.transform = CGAffineTransformMakeTranslation(-320, 0);

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelay:.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    myView.transform = CGAffineTransformMakeTranslation(0,0);
    [UIView commitAnimations];

}
于 2012-05-26T07:42:16.587 回答