Как правильно обрабатывать повороты изображений для iphone / ipad?


У меня есть 2 изображения, одно в портретном режиме, а другое в альбомном режиме. Как лучше всего переключать эти изображения, когда происходит поворот вида мобильного устройства?

В данный момент я просто показываю изображение портрета. А при повороте устройства в альбомный режим портретное изображение просто растягивается.

Должен ли я проверять в обработчике поворота ориентации и просто сбросить изображение на правильное ориентационное изображение (т. е. установить его вручную на основе ориентация)??

Спасибо!

1   3   2012-07-31 08:49:50

1 ответ:

Я нашел три способа.Я думаю, что последний лучше

1: Авторезистив

Пример:

UIImageView *myImageView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]];    
myImageView.frame = self.view.bounds;
myImageView.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight
myImageView.contentMode = UIViewContentModeScaleAspectFill;    
[self.view addSubview:myImageView]; 
[imageView release];

2: CGAffineTransformMakeRotation

Пример:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
                                        duration:(NSTimeInterval)duration {
  if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {        
                myImageView.transform = CGAffineTransformMakeRotation(M_PI / 2);
  }
  else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight){
                myImageView.transform = CGAffineTransformMakeRotation(-M_PI / 2);
  }
  else {
             myImageView.transform = CGAffineTransformMakeRotation(0.0);
  }
}

3:Установите авторазмер myImageView в качестве автоматического заполнения экрана в Interface Builder

Пример:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
if((self.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (self.interfaceOrientation == UIDeviceOrientationLandscapeRight)){
    myImageView.image = [UIImage imageNamed:@"myImage-landscape.png"];
} else  if((self.interfaceOrientation == UIDeviceOrientationPortrait) || (self.interfaceOrientation == UIDeviceOrientationPortraitUpsideDown)){
    myImageView.image = [UIImage imageNamed:@"myImage-portrait.png"];
} }

Смотрите больше решений здесь

Разработчик.решение apple здесь