IOS 8图像缩放和自动布局

可以说我有一个UIView只有一个图像在UIView的顶部集中,我提供了一个图像资源的图像像这样

  • 正常的iPhone 4s和更早的50×50
  • @ 2x for iPhone 5 / 5c / 5s / 6 100×100
  • @ 3x for iPhone 6 + 150×150

所以很显然,图像的宽度和高度随着不同的设备而增加,所以问题是如何处理自动布局,我应该将宽度和高度约束设置为大于或等于或大于? 而且我该如何处理图像本身的定位呢? 最后我注意到,IOS模拟器总是在不同的设备上使用相同的映像,从我的端到端是一个错误还是一个问题?

你需要了解点和像素之间的差异。 我们在界面生成器中devise视图,而不是以像素为单位,

1.对于正常屏幕(非视网膜)点=像素。

因此,如果我们在界面构build器中将图像视图的高度和宽度设置为50 * 50,并加载50×50像素的图像,那么恰好适合,如果我们在50 * 50的图像视图中加载100×100像素的图像,图像和一些压缩伪像可能会出现。

2.对于视网膜显示点= 2像素。

因此,对于50 * 50的图像视图,您需要加载100 * 100像素的图像。 它看起来更清晰,没有压缩失真发生。

3.对于6+点= 3像素。

所以对于50 * 50的图像视图,你需要加载150 * 150的图像。

按照你的设想,imageview不会重新调整到150 * 150。 它将是50 * 50,但包含150 * 150像素的图像,这将导致超级锐利的显示。

首先观看介绍:从WWDC2014 https://developer.apple.com/videos/wwdc/2014/获取界面生成器中的新function,并针对不同的屏幕大小(大,小,默认)devise不同的UI。

在界面生成器中,您应该使用最小的约束 – 50×50,并使用正确的图像名称。 然后只需添加@ 2x @ 3x前缀的其他图像,系统将根据您使用的设备使用它们。

屏幕上的UI图像的实际宽度/高度是以点而不是像素来定义的。 提供的图像来源,@ 2x,@ 3x等,以便更高分辨率的屏幕,您提供所需的额外的像素精度。 例如1x1pt在所有屏幕上都是相同的,但是显示高质量图像所需的像素是1×1(@ 1x),2×2(2x)和3×3(@ 3x)。

因此,用宽度和高度来定义你的布局。 除了为实际设备的不同分辨率提供版本之外,您并不需要担心原始图像像素。

您需要担心的主要考虑因素是图像在屏幕上缩放时的外观。 通过设置点的宽度和高度以匹配@ 1x图像的像素宽度和高度,可以获得完美的图像。 这样你就知道什么时候使用@ 2x和@ 3x,你在屏幕上是完美的像素。 使点宽度和高度大于或小于原始图像的分辨率将导致缩放或缩小图像,这将对图像的清晰度产生一些影响。