GKAchievementViewController полноэкранное (или PageSheet) нечетное отображение - PullRequest
0 голосов
/ 08 августа 2011

Я сейчас работаю с iPad и использую Cocos2D.До сих пор я только что тестировал вид по умолчанию при работе с Game Center.Я пытаюсь настроить его так, как я хочу, используя полноэкранный режим или страницу страниц (как показано на рисунке).

Мой вопрос (ы) довольно прост (по крайней мере, в вопросе).Почему именно это делает?Я не могу понять, как получить доступ к этой "деревянной" рамке, которая рисует поверх представления достижений.

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 ]

1 голос
/ 20 августа 2011

Я только что попытался сделать это с UIModalPresentationPageSheet, и я вижу тот же результат, это не только вы. «Правильный» способ сделать это - не изменять размер модального вида! :) Дизайнеры пользовательского интерфейса Apple выбрали желаемый стиль представления и размер представления достижений; лучше не связываться с этим, для согласованности между играми.

0 голосов
/ 30 августа 2011

С этим не так много настроек, вам нужно будет получить данные и отобразить их самостоятельно, если хотите.

Если вы увеличите размер до 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);
...