当前位置: 首页 > 知识库问答 >
问题:

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

祝昊东
2023-03-14

我有两个图像,一个是竖屏,另一个是横向模式。当移动设备视图旋转时,切换这些图像的最佳方式是什么?

目前我只显示肖像图像。当设备旋转到横向模式时,纵向图像只需拉伸即可。

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

谢谢

共有1个答案

梁丘安晏
2023-03-14

我找到了三种方法。我认为最后一个更好

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: 在Interface Builder中将myImageView的自动大小设置为自动填充屏幕

例子:

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

在此处查看更多解决方案

developer.apple解决方案在这里

 类似资料:
  • 问题内容: 让我们开始考虑两种类型的相机旋转: 摄像机绕点旋转(轨道): 相机旋转目标(FPS) 然后是一个更新函数,其中从眼睛/目标/上摄像机矢量中计算出投影/视图矩阵: 当摄像机的视图方向与上轴平行(在此处为z-up)时,出现这些旋转功能的问题…在那时,摄像机的行为确实令人讨厌,因此我将遇到以下故障: 所以我的问题是,我该如何调整以上代码,使相机完整旋转,而最终结果在某些边缘点上看起来并不奇怪

  • 我的应用程序中有3个媒体查询断点 (最小宽度:1024px)//适用于台式机 (最大宽度:1023px)和(方向:纵向)//用于移动纵向 (最大宽度:1023px)和(方向:横向)//用于移动横向 根据断点,我将更改对应于设备和方向的图像源 对于桌面设备,图像的宽度和高度为346x251。 现在,我需要对移动肖像和风景的图像进行切片。移动肖像和移动景观的理想尺寸是多少

  • 问题内容: 所以我一直在使用: 使我的HTML内容可以在iPhone上很好地显示。在用户将设备旋转到横向模式之前,它一直很好用,在该模式下,显示始终限制为320px。 是否有一种简单的方法来指定根据用户更改设备方向而更改的视口?还是我必须借助Javascript来解决这个问题? 问题答案: 我只是想自己解决这个问题,而我想到的解决方案是: 无论它的方向如何,这似乎都将设备锁定为1.0比例。副作用是

  • 问题内容: 我使用10gen的本机node.js驱动器将mongodb(2.2.2)与node.js一起使用。 起初一切顺利。但是当涉及到并发基准测试部分时,会发生很多错误。频繁进行1000次并发连接/关闭可能会导致mongodb拒绝任何进一步的请求,并出现以下错误: 另外,如果许多客户端在没有显式关闭的情况下关闭,则mongodb将花费几分钟的时间来检测并关闭它们。这也将导致类似的连接问题。(使

  • 我试试看。js与mongodb(2.2.2)一起使用本机节点。js drive by 10gen。 起初一切都很顺利。但在并发基准测试部分,出现了很多错误。频繁连接/关闭1000次并发可能会导致mongodb拒绝任何进一步的请求,错误如下: 此外,如果很多客户端在没有显式关闭的情况下关闭,mongodb需要几分钟来检测并关闭它们。这也会导致类似的连接问题。(使用/var/log/mongodb/m

  • 问题内容: 什么是最好的Java图像处理库/方法?[关闭]我同时使用JAI媒体API和ImageMagick吗? ImageMagick存在一些可伸缩性问题,基于JNI的JMagick也没有吸引力。与ImageMagick相比,JAI执行大小调整操作时的质量结果较差。 有谁知道过任何出色的开源或商业工具,它们都是本机Java并可以提供高质量的结果? 问题答案: 我知道这个问题已经很老了,但是随着新