Проблема ориентации при использовании GKLeaderboardViewController - PullRequest
0 голосов
/ 21 июля 2011

К сожалению, я не очень хорошо понимаю UIViewControllers и не совсем понимаю, как они сочетаются со сценами cocos2d. Тем не менее, я могу загрузить стандартную таблицу лидеров Game Center поверх моей игры cocos2d (только для ландшафта) на iPhone. Но моя игра является универсальным приложением, и когда я пробую его на iPad, представление Game Center загружается в портретной ориентации, составляет примерно половину его размера (заполняет только одну четверть экрана) и не центрируется. Когда я поворачиваю устройство, представление Game Center ориентируется на альбомную ориентацию, но становится очень растянутым и выглядит так, как будто оно не предназначено для iPad в альбомной ориентации.

У кого-нибудь есть совет?

- (void) showLeaderboard
{
    if(![MyAppDelegate isGameCenterAPIAvailable])   
        return;

    if ([GKLocalPlayer localPlayer].isAuthenticated == YES)
    {
        CGSize screenSize = [[UIScreen mainScreen] bounds].size;
        tempVC = [[RootViewController alloc] init];
        GKLeaderboardViewController *leaderboard = [[[GKLeaderboardViewController alloc] init] autorelease];
        if (leaderboard != NULL)
        {
            leaderboard.leaderboardDelegate = self;
            [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];

            // Pause game
            [[CCDirector sharedDirector] pause];

            [tempVC presentModalViewController:leaderboard animated: NO];
            leaderboard.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(0.0f));
            [leaderboard.view setCenter:CGPointMake(screenSize.height/2, screenSize.width/2)];
            leaderboard.modalPresentationStyle = UIModalPresentationCurrentContext;
        }
    }
}

- (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController
{
    [tempVC dismissModalViewControllerAnimated: YES];
    [tempVC.view.superview removeFromSuperview];
    [tempVC release];
    tempVC = nil;

    // Resume game
    [[CCDirector sharedDirector] resume];
}

1 Ответ

0 голосов
/ 22 июля 2011

Пожалуйста, посмотрите на Реализация iAds в приложении Cocos2d .

[self.view addSubview:self.bannerView];

В этом учебном пособии добавьте объект UIView Subview в RootViewController.view, который находится в шаблоне приложения cocos2d, вместо EAGLView.

...