Проблема ориентации интерфейса UIToolBar и iPhone - PullRequest
2 голосов
/ 29 ноября 2009

Я занимаюсь разработкой приложения для iPhone. Один вид поддержки ориентации в портретной и альбомной ориентации. У меня есть два отдельных взгляда для обеих ориентаций. Это представление имеет UIToolbar вверху.

Проблема в том, что когда я снова переключаю вид с пейзажа на портрет, UIToolbar вверху исчезает. Я хочу, чтобы toolbar вернулся в исходное положение при повороте назад в портретное положение.

Вот что я делаю в своей программе:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)
interfaceOrientation duration:(NSTimeInterval)duration {    
    if (interfaceOrientation == UIInterfaceOrientationPortrait)
    {
        self.view = self.portrait;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(0));
        self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0);  
    }
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
    {
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90));
        self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0);
    }
    else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    {
        self.view = self.portrait;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(180));
        self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0);
    }
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = 
        CGAffineTransformMakeRotation(degreesToRadian(90));
        self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0);
    }
}

Я не знаю, что мне здесь не хватает? Любая помощь будет очень признательна.

Ответы [ 3 ]

2 голосов
/ 10 августа 2010

В конструкторе интерфейсов выберите панель инструментов, нажмите Command-3; это вызывает меню управления линейкой / выравниванием.

В разделе Autsizing по умолчанию панель инструментов связана только с левой и правой частями и центром. Не в ТОП. Выберите «Я» наверху. теперь панель инструментов пристыкована к верхней части вида и не будет отталкиваться во время вращения.

Я уверен, что для этого также есть эквивалентный код

1 голос
/ 29 ноября 2009
self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0);  

Проблема здесь в том, что вы делаете высоту 480. Но это должно быть 460. Таким образом, вы в настоящее время имеете на 20 пикселей больше по высоте, что может привести к тому, что верхняя панель несколько отходит от экрана.

1 голос
/ 29 ноября 2009

, если вы хотите просто сделать ваш вид вращающимся, этого достаточно для реализации

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
    return YES;
}

в вашем классе ViewCountroller

...