GKAchievementViewController全屏(或PageSheet)奇数显示

时间:2011-08-08 16:43:49

标签: ios uiview uikit cocos2d-iphone gamekit

我目前正在使用iPad并使用Cocos2D。到目前为止,我刚刚在处理Game Center时使用默认视图进行测试。我正试图按照我想要的方式设置它,它使用全屏或PageSheet(如图所示)。

我的问题相当简单(至少在提问中)。为什么这样做呢?我无法弄清楚如何访问正在成就视图顶部的“木制”框架。

Example image

以下是我一直在使用的代码(包括我一直在尝试的随机内容)以获得更大的视图。

- (void)showAchievements:(id)sender
{   
    GKAchievementViewController *achievements = [[GKAchievementViewController alloc] init];
    if (achievements != nil)
    {
        achievements.achievementDelegate = self;

        tempVC = [[UIViewController alloc] init];
//      tempVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

//      tempVC.interfaceOrientation = [[UIDevice currentDevice] orientation];

        [achievements shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft];
        [achievements shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight];

        [tempVC shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft];
        [tempVC shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight];


//      achievements.navigationController.modalPresentationStyle = UIModalPresentationPageSheet;
//      tempVC.wantsFullScreenLayout = YES;
        tempVC.modalPresentationStyle = UIModalPresentationPageSheet;
        tempVC.view.superview.bounds = CGRectMake(0, 0, winSize.width, winSize.height);
//      tempVC.view.superview
//      tempVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
//      achievements.wantsFullScreenLayout = YES;
        achievements.modalPresentationStyle = UIModalPresentationPageSheet;
//      achievements.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        achievements.navigationController.modalPresentationStyle = UIModalPresentationPageSheet;
//      achievements. = CGRectMake(0, 0, winSize.width, winSize.height);

        [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];
        [tempVC presentModalViewController:achievements animated:YES];
    }
}

我对UIKit的理解非常有限。我使用Cocos2D和Box2D几乎没有别的东西(直到现在为止)。请非常感谢您提供的任何帮助。如果你能简单地告诉我如何正确完成(没有我在那里的所有垃圾代码)那将是完美的。

谢谢:)

2 个答案:

答案 0 :(得分:1)

我只是尝试用UIModalPresentationPageSheet做到这一点,我看到相同的结果,它不仅仅是你。 “正确”的方法是不改变模态视图的大小! :) Apple的UI设计师选择了他们想要的演示风格&成就视图的大小;为了游戏之间的一致性,最好不要乱用它。

答案 1 :(得分:0)

此处没有太多自定义,您需要获取数据并在需要时自行显示。

如果将视图调整为420x512,它将正确显示。

尝试这样的事情:

        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        // The device is an iPad running iPhone 3.2 or later.

        leaderboardController.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(90.0f));
        leaderboardController.view.bounds = CGRectMake(0, 0, 420, 512);
        //leaderboardController.view.center = CGPointMake(240, 160);
        leaderboardController.view.center = CGPointMake(364, 512);