处理iphone / ipad图像旋转的正确方法是什么?

时间:2012-07-31 04:49:50

标签: iphone ios device-orientation landscape-portrait orientation-changes

我有2张图片,一张是纵向模式,另一张是横向模式。 移动设备视图旋转发生时切换这些图像的最佳方法是什么?

目前我只是显示肖像图像。当设备旋转到横向模式时,纵向图像就会被拉伸。

我应该在方向旋转处理程序中检查并简单地将图像重置为正确的方向图像(即根据方向手动设置)??

谢谢!

1 个答案:

答案 0 :(得分:2)

我发现了三种方法。我认为最后一种方式更好

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"];
} }

查看更多解决方案here

developer.apple解决方案是here