Проблема ориентации при использовании GKLeaderboardViewController

К сожалению, я не очень хорошо разбираюсь в 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];
}

person codeperson    schedule 20.07.2011    source источник


Ответы (1)