5

我有一个UIImage我想在 iPhone 4/4S/5 屏幕上逐像素显示。重要的是它根本没有缩放,但是当我尝试使用时setImage,它会使图像太大。

UIImageView是在 a 中制作的UIStoryboard(因为我对此真的很陌生)并设置为“重绘”模式,其他所有内容均为默认值。其他模式都没有正确缩放UIImage(编辑:也就是说,将UIImageViewscontentMode 设置为其他东西是行不通的)。

我环顾四周,发现了这个:

[self.imageView setImage: image];
self.imageView.frame = CGRectMake(self.imageView.frame.origin.x, 
                                  self.imageView.frame.origin.y,
                                  image.size.width, 
                                  image.size.height);

这是行不通的。我尝试将每个维度减半,但它仍然关闭。

更新:我认为它是在事后为视网膜显示缩放的,因为在我使用的视网膜 iPhone 4 和非视网膜模拟器模式下,图像占用了相同百分比的屏幕。有什么方法可以将 UIImage 或 UIImageView 或项目设置为“视网膜就绪”?

更新 2:通过将每个维度减半来缩小图像似乎可行。iPhone 4/4S 的像素是 2G/3G/3GS 的两倍。但这似乎是一个黑客解决方案,我什至不确定它是否在利用视网膜显示像素密度时这样做。

4

5 回答 5

9

如果您的 UIImage 的大小大于您的 UIImageView 的大小,则使用:

if image.size > imageView.size 

[self.imageView setContentMode:UIViewContentModeScaleAspectFit];

这将使您的图像保持成比例,同时适合图像视图,

但是,如果 UIImage 的大小小于 UIImageView 的大小,则使用:

 if image.size < imageView.size 

 self.imageView.contentMode = UIViewContentModeCenter;

它将使您的图像保持在中心,按比例和全尺寸。

于 2013-05-28T04:22:18.827 回答
2

尝试将您的contentMode属性更改UIImageViewUIViewContentModeCenter

self.imageView.contentMode = UIViewContentModeCenter;

这应该会导致图像根本无法缩放,并在 UIImageView 中居中显示。

于 2013-05-28T02:39:55.823 回答
1

对不起,我不知何故忘记了这个问题!答案在其他方面很有帮助,我尝试了所有这些,但我发现的解决方案是,您需要通过在文件中的扩展名前附加“@2x”来标记您想要显示的任何图像而不在视网膜显示器上缩放姓名。例如,“foo.png”和“foo@2x.png”。将内容模式更改为UIViewContentModeCenter单独的内容是行不通的。

您需要这样做的原因是因为 iOS 会将 UIImageView 中的非视网膜图像放大到 4 倍的区域,以使它们在视网膜和非视网膜设备上看起来相同。如果你想让它利用所有像素而不是放大它,你必须在文件名中用“@2x”表示,它只会将该图像用于视网膜设备。

于 2014-07-15T16:29:42.977 回答
0
[self.imageView setContentMode:UIViewContentModeScaleAspectFit];

这不会导致图像缩放。

于 2013-05-28T03:25:18.340 回答
0

您正在正确使用代码

[self.imageView setImage: image];
self.imageView.frame = CGRectMake(self.imageView.frame.origin.x,     self.imageView.frame.origin.y,
                         image.size.width, image.size.height);

但是您需要将其内容模式设置为

[self.imageview setContentMode:UIViewContentModeScaleToFill];

现在这个 UIViewContentModeScaleToFill 将用图像填充 UIimage 视图。由于您已将 uiimageview 大小设置为与 Image 相同,因此图像现在将显示为失真。

希望对你有帮助

于 2014-07-15T10:26:14.430 回答