2012-06-12 2 views
0

Я использую:Вращающиеся Не обнаружено

if (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight) 
{ 
    viewofimage.frame = CGRectMake(130, 45, 220, 115); 
    share.frame = CGRectMake(205, 161, 70, 70); 
    invite.frame = CGRectMake(8, 161, 70, 70); 
    contact.frame = CGRectMake(402, 161, 70, 70); 
    invitation.frame = CGRectMake(3, 227, 81, 21); 
    sharing.frame = CGRectMake(200, 227, 81, 21); 
    contacting.frame = CGRectMake(397, 227, 81, 21); 
} 
else 
{ 
    viewofimage.frame = CGRectMake(20, 64, 280, 206); 
    invite.frame = CGRectMake(8, 285, 70, 70); 
    share.frame = CGRectMake(125, 285, 70, 70); 
    contact.frame = CGRectMake(242, 285, 70, 70); 
    invitation.frame = CGRectMake(3, 358, 81, 21); 
    sharing.frame = CGRectMake(120, 358, 81, 21); 
    contacting.frame = CGRectMake(237, 358, 81, 21); 
} 

для установки кнопок и меток в определенных местах при вращении. Единственная проблема заключается в том, что когда я покидаю этот контроллер и перехожу к другому контроллеру с тем же кодом, он не перемещает кнопки и метки в определенные значения CGRECTMAKE. Он перемещает их только при повороте выбранного контроллера просмотра. Как я могу заставить другие контроллеры представлений определить, в какой ориентации он находится, и правильно ли он изменился при получении?

ответ

0

Set UIView к ложному Используя этот метод:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{ 

if (interfaceOrientation = UIInterfaceOrientationLandscapeLeft || interfaceOrientation = UIInterfaceOrientationLandscapeRight) 
{ 
viewofimage.frame = CGRectMake(130, 45, 220, 115); 
share.frame = CGRectMake(205, 161, 70, 70); 
invite.frame = CGRectMake(8, 161, 70, 70); 
contact.frame = CGRectMake(402, 161, 70, 70); 
invitation.frame = CGRectMake(3, 227, 81, 21); 
sharing.frame = CGRectMake(200, 227, 81, 21); 
contacting.frame = CGRectMake(397, 227, 81, 21); 
} 
else 
{ 
viewofimage.frame = CGRectMake(20, 64, 280, 206); 
invite.frame = CGRectMake(8, 285, 70, 70); 
share.frame = CGRectMake(125, 285, 70, 70); 
contact.frame = CGRectMake(242, 285, 70, 70); 
invitation.frame = CGRectMake(3, 358, 81, 21); 
sharing.frame = CGRectMake(120, 358, 81, 21); 
contacting.frame = CGRectMake(237, 358, 81, 21); 
} 

return YES; 
} 
+0

Это работает, но я столкнулся с проблемой. Каждая вкладка является навигационным контроллером, и я устанавливаю панель навигации в скрытое. Некоторые из кнопок нажимают на табличный вид со своим собственным xib, который должен иметь панель навигации, поэтому, когда они появляются, я показываю панель навигации. Это приводит к тому, что UIButtons сдвигается вниз по высоте панели навигации, но не ImageView. Любые идеи о том, как это избежать? – user717452

0

View Controller имеет этот метод, который вызывается каждый раз, когда он обнаруживает поворот. Я предполагаю, что это где вы в настоящее время этот код

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) 
    { 
     viewofimage.frame = CGRectMake(130, 45, 220, 115); 
     share.frame = CGRectMake(205, 161, 70, 70); 
     invite.frame = CGRectMake(8, 161, 70, 70); 
     contact.frame = CGRectMake(402, 161, 70, 70); 
     invitation.frame = CGRectMake(3, 227, 81, 21); 
     sharing.frame = CGRectMake(200, 227, 81, 21); 
     contacting.frame = CGRectMake(397, 227, 81, 21); 
    } 
    else 
    { 
     viewofimage.frame = CGRectMake(20, 64, 280, 206); 
     invite.frame = CGRectMake(8, 285, 70, 70); 
     share.frame = CGRectMake(125, 285, 70, 70); 
     contact.frame = CGRectMake(242, 285, 70, 70); 
     invitation.frame = CGRectMake(3, 358, 81, 21); 
     sharing.frame = CGRectMake(120, 358, 81, 21); 
     contacting.frame = CGRectMake(237, 358, 81, 21); 
    } 
} 

- = - = - = - = - = - = - = - = -

Если вы хотите, чтобы обнаружить ориентацию и размещать объекты соответственно при переходе к другой ViewController ... Тогда вы можете обнаружить, что для ориентации вы в так:

-(void)viewWillAppear:(BOOL)animated 
{ 
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
    if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) 
    { 
     viewofimage.frame = CGRectMake(130, 45, 220, 115); 
     share.frame = CGRectMake(205, 161, 70, 70); 
     invite.frame = CGRectMake(8, 161, 70, 70); 
     contact.frame = CGRectMake(402, 161, 70, 70); 
     invitation.frame = CGRectMake(3, 227, 81, 21); 
     sharing.frame = CGRectMake(200, 227, 81, 21); 
     contacting.frame = CGRectMake(397, 227, 81, 21); 
    } 
    else 
    { 
     viewofimage.frame = CGRectMake(20, 64, 280, 206); 
     invite.frame = CGRectMake(8, 285, 70, 70); 
     share.frame = CGRectMake(125, 285, 70, 70); 
     contact.frame = CGRectMake(242, 285, 70, 70); 
     invitation.frame = CGRectMake(3, 358, 81, 21); 
     sharing.frame = CGRectMake(120, 358, 81, 21); 
     contacting.frame = CGRectMake(237, 358, 81, 21); 
    } 
} 

- = - = - = - = - = - = - = - = -

для дальнейшего ссылка:

autoMaskSubView

How to programmatically determine iPhone interface orientation?

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