过渡UIViews

时间:2013-11-03 09:20:53

标签: ios objective-c cocoa-touch uiview cocos2d-iphone

我在游戏中使用Facebook SDK,以便在Facebook上发布一些分数。 我的代码使用的是Cocos2D框架,因此我必须添加一些代码才能使用UIView。 一切正常,但视图以纵向显示,尽管我的笔尖属性指示横向,ShouldautoRotate方法返回横向,应用方向也是横向。 这是设置视图的代码:

// share to facebook methods
-(void)shareFacebookSelected
{
[[SimpleAudioEngine sharedEngine]stopBackgroundMusic];
[[CCDirector sharedDirector] pause];

 if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    myViewController1 = [[HFViewController alloc] initWithNibName:@"HFViewController_iPhone" bundle:nil];

 } else {
     myViewController1 = [[HFViewController alloc] initWithNibName:@"HFViewController_iPad" bundle:nil];
 }


UIWindow* window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:window cache:YES];


[[[CCDirector sharedDirector]view] removeFromSuperview];

myViewController1.view.hidden = false;

[window addSubview:myViewController1.view];


[UIView commitAnimations];

}

我还启用了一个按钮返回正常的cocos游戏并移除了UIView但是在返回时我的主游戏方向已经变为肖像。

任何想法???

1 个答案:

答案 0 :(得分:0)

以下几行解决了我的问题:

#define DegreesToRadians(x) ((x) * M_PI / 180.0)
CGRect screenRect = [[UIScreen mainScreen]bounds];
 myViewController1.view.transform = CGAffineTransformMakeRotation(DegreesToRadians(90));
myViewController1.view.hidden = false;
myViewController1.view.frame = screenRect;

我基本上将视图旋转90度,而不是最优雅的解决方案,只是蛮力,但它的工作原理。我仍然想知道它为什么会这样做,哦,好吧