Iphone Box2D刚体在加载另一个视图时扭曲

Iphone Box2D刚体在加载另一个视图时扭曲,iphone,ios,box2d,Iphone,Ios,Box2d,我有一个非常棒的Box2D世界。我在一个简单的iOS游戏中使用了它,当一个物体与另一个物体碰撞时,用户倾斜设备将物体推到屏幕上的各个点上 当它被深埋在我的应用程序中的测试控制器中时,它工作得很好。我从菜单屏幕上的一个按钮调用它,游戏屏幕上的一个按钮将通过popToViewController返回菜单。但当我看到它有多好时,我意识到我想让游戏成为用户看到的第一个屏幕(在默认加载图像之后)。因此,现在该应用程序加载了整个世界,游戏立即启动,没有任何问题 直到用户点击菜单按钮进入菜单屏幕-另一个视图控

我有一个非常棒的Box2D世界。我在一个简单的iOS游戏中使用了它,当一个物体与另一个物体碰撞时,用户倾斜设备将物体推到屏幕上的各个点上

当它被深埋在我的应用程序中的测试控制器中时,它工作得很好。我从菜单屏幕上的一个按钮调用它,游戏屏幕上的一个按钮将通过popToViewController返回菜单。但当我看到它有多好时,我意识到我想让游戏成为用户看到的第一个屏幕(在默认加载图像之后)。因此,现在该应用程序加载了整个世界,游戏立即启动,没有任何问题

直到用户点击菜单按钮进入菜单屏幕-另一个视图控制器。菜单控制器加载良好,一切正常。但是,当你点击后退按钮返回游戏/世界时,图像/身体被扭曲了。失真程度取决于菜单控制器被推到导航堆栈上时它们的旋转方式。有时它们被放大,有时被覆盖

加载菜单控制器时,我确实尝试过暂停世界(不调用Step),但这无助于解决图像失真问题

以下是加载菜单控制器的代码:

  //unhide the navbar for the next screen
   [self.navigationController setNavigationBarHidden:NO];

   MenuViewController *mvc = [[MenuViewController alloc]init];

   [self.navigationController pushViewController:mvc animated:YES];

   [mvc release];
下面是应用程序代理在应用程序didFinishLaunchingWithOptions中加载游戏视图控制器的位置:

   B2DViewController *b2dvc = [[B2DViewController alloc]init];

   UINavigationController *navcon = [[UINavigationController alloc] init];

   [navcon setNavigationBarHidden:YES];

   [navcon pushViewController:b2dvc animated:NO];
   [window addSubview:navcon.view];

   [b2dvc release];

    [window makeKeyAndVisible];
图像通过xib输入。一个是按钮,一个是图像视图。两者都添加到动态实体中,动态实体的配置如下:

    b2PolygonShape dynamicBox;
    dynamicBox.SetAsBox(boxDimensions.x, boxDimensions.y);

 ...

    b2FixtureDef fixtureDef; 
    fixtureDef.shape = &dynamicBox;
    fixtureDef.density = 3.0f;
    fixtureDef.friction = 0.3f;
    fixtureDef.restitution = 0.5f;

  ...
我试图隐藏所有的子视图,但是,正如您可能怀疑的那样,这只会将它们隐藏在视图之外,而不会隐藏在扭曲的力量之下。我还关闭了IB中所有拉伸和调整大小的功能,但没有任何效果(我只是在猜测)


我非常感谢任何人提供的任何帮助或想法。

我没有将菜单控制器推到导航控制器上,然后将导航控制器添加到视图中,而是使用presentModalViewController:animated。这并没有解决问题,但有一次我注释掉了[self.navigationController setNavigationBarHidden:NO];问题解决了

//unhide the navbar for the next screen
//[self.navigationController setNavigationBarHidden:NO];

MenuViewController *mvc = [[MenuViewController alloc]init];

[self presentModalViewController:(UIViewController *)mvc  animated:YES];
[mvc release];
导航栏似乎在粉碎图像?我想进一步研究这个问题,因为导航栏可能很方便,但我现在没有时间,这可能意味着我永远也找不到它。

+1。很抱歉,我无法帮助回答实际问题:(