2013-10-08 3 views
0

У меня есть приложение ipad, использующее раскадровки, которые выложены в ландшафтном режиме. Все ярлыки и образы просматриваются в раскадровке. Он отлично смотрится в ландшафтном режиме, но как только планшет повернут, ipad перерисовывает виджеты, используя параметры ландшафтного экрана, а не портретные режимы. Как заставить виджеты перерисовывать, когда они находятся в правильном режиме?Виджеты и вращение экрана в IOS

ответ

0

Вы можете использовать автоматическое изменение размера, чтобы перерисовать свой вид в режиме Portait.

Или

Вы можете использовать interfaceOrientation, чтобы установить точное положение взглядов, не выровненные в режиме Portait что-то вроде кода ниже

Примечания: Изменение Widgets кадра только если это неприлично.

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

Анимация, чтобы иметь хорошую ориентацию.

Для ИОС 6 используют - (BOOL) shouldAutorotate

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if (interfaceOrientation == UIInterfaceOrientationPortrait|| 
      interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) 
    { 
     //Code 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [UIView beginAnimations:nil context:nil]; 
      [UIView setAnimationDuration:0.5]; 
      [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
      _btn1.frame = CGRectMake(190, 270, 137, 240); 
      _btn2.frame = CGRectMake(440, 270, 137, 240); 
      _btn3.frame = CGRectMake(300, 40, 137, 240); 
      [UIView commitAnimations]; 
     }); 

    } 
    else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight|| 
        interfaceOrientation == UIInterfaceOrientationLandscapeLeft) 
    { 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.5]; 
     [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
     _btn1.frame = CGRectMake(250, 180, 137, 240); 
     _btn2.frame = CGRectMake(640, 180, 137, 240); 
     _btn3.frame = CGRectMake(440, 40, 137, 240); 
     [UIView commitAnimations]; 
    }); 

    //Code 
} 

return YES; 

} 
+0

Я не понимаю. Какой смысл использовать раскадровки и ограничения, если пользовательский интерфейс требует специального кода для обработки вращения экрана? Я искал «автоматическое изменение размера», но это похоже только на ios 6 (я использую ios7). Я думаю, может быть, это для AutoLayout? – wufoo

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