UIView有时会显示子视图吗?

时间:2012-05-26 06:44:16

标签: iphone objective-c ios uiview

我正在开发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];

2 个答案:

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

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

要将其移回

 self.transform = CGAffineTransformIdentity;

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

}