2009-11-28 2 views
2

Я разрабатываю приложение на iPhone. Одна ориентация ориентации ориентации в портретной и ландшафтной. У меня есть два разных вида для обеих ориентаций. У этого вида есть UIToolbar наверху.UIToolBar и iPhone Orientation Issue

Проблема в том, что я меняю вид назад с пейзажа на портрет, 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); 
    } 
} 

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

ответ

1

если вы хотите просто сделать свой вид с возможностью поворота, является достаточно для реализации

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

в классе viewCountroller

+0

Plus вы хотите установить параметры якоря/протяжения на вкладке макета в Interface Builder. –

+0

У меня есть два вида, которые я хочу поменять в портретном и ландшафтном режимах. У портретного вида есть панель инструментов вверху, которая появляется при первом запуске. Но когда я меняю ориентацию и возвращаю ее обратно на панель управления портретом. – Leo

1
self.view.bounds = CGRectMake(0.0, 0.0, 300.0, 480.0); 

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

+0

20px не приведет к исчезновению всей панели инструментов. и размер экрана iPhone составляет 320x480. – Morion

+0

да. согласен. вот почему я сказал, «который может посылать топбар немного с экрана». , :) –

+0

Привет, ребята. Спасибо за ответы. Я попытался установить меньшую высоту, но панель инструментов все еще невидима. Есть идеи? – Leo

2

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

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

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

+0

Также возможно, что какой-либо другой вид не закреплен должным образом (в режиме автосохранения) и рисуется поверх панели инструментов. – jlstrecker

Смежные вопросы