2010-07-02 6 views
2

Я использую метод делегата для автоматического вращения в приложении iphone.Проблема, когда iphone имеет место Ориентация ландшафта

-(BOOL)shouldAutorotateToInterfaceOrientation:UIInterfaceOrientation)interfaceOrientation{ 

    if(interfaceOrientation == UIInterfaceOrientationPortrait){ 
      [UIView beginAnimations:@"View Flip" context:nil]; 
      [UIView setAnimationDuration:0.2f]; 
      [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
      self..view.transform = CGAffineTransformMakeRotation(0); 
      self.view.bounds = CGRectMake(0,0,320,460); 
      [UIView commitAnimations]; 
      self.navigationBar.frame=CGRectMake(0, 0, 320, 44); 


     }else if(interfaceOrientation == UIInterfaceOrientationLandscapeRight){ 

      [UIView beginAnimations:@"View Flip" context:nil]; 
      [UIView setAnimationDuration:0.2f]; 
      [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
      CGAffineTransform transform = CGAffineTransformMakeRotation(3.14159/2); 
      self.view.transform = transform; 
      CGRect contentRect = CGRectMake(10, -10, 480, 300); 
      self.view.bounds = contentRect; 
      [UIView commitAnimations]; 

      self.navigationBar.frame=CGRectMake(0, 0, 480, 32); 

     }else if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft){ 
      //navigationController.navigationBar.frame=CGRectMake(0, 0, 480, 34); 
      [UIView beginAnimations:@"View Flip" context:nil]; 
      [UIView setAnimationDuration:0.2f]; 
      [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
      CGAffineTransform transform = CGAffineTransformMakeRotation(-3.14159/2); 
      self.view.transform = transform; 
      CGRect contentRect = CGRectMake(-10, -10, 480, 300); 
      self.view.bounds = contentRect; 
      [UIView commitAnimations]; 

      self.navigationBar.frame=CGRectMake(0, 0, 480, 32); 
     }else if(interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){ 
       return NO; 
     } 
     return YES; 
    } 

Он работает отлично на iPhone OS3 но на iphone OS4, при вращении в ландшафтном режиме на дисплее отображается неправильно

Landscape

При вращении назад в портретном режиме интерфейсы сжимает ... . Portrait

Пожалуйста, предложите мне какое-нибудь предложение, как я его разрешаю ??

Благодаря
Дипикой

+1

Я не знаю, если это проблема, но у вас там много жестко закодированных номеров - вы должны попытаться использовать вычисленные значения, когда вы можете это сделать, а не 320, вы должны использовать self.view.frame.size .ширина; – deanWombourne

ответ

0

CGRect contentRect = CGRectMake (-10, -10, 480, 300); self.view.bounds = contentRect;

почему вы даете -10, -10? любая конкретная причина. Это полностью связано с несоответствием кадра. Просто измените этот фрейм и проверьте его.

+1

Я установил (-10, -10) только для отравления зрения на экране .... Я использую ipod (версия 3.1.3) .. на этом iPod он отлично работает ... но на iPhone 4.0 он не работает. – Deepika

+1

iOS4 имеет много проблем. Этот код, работающий отлично в серии 3.0, не означает, что он должен работать отлично для iOS4. Я думаю, что это проблема сохранения кадров. Просто измените фрейм, а также измените цвет фона всех подзонов, чем точный кадр каждого вида. Попробуйте один раз .... –

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