我正在尝试为新的6和6+设备更新我的应用程序。
我已经为新的iPhone尺寸(6和6+)添加了启动图像。资产目录中有6和6+的条目。这没问题。
我还有一些全屏视图覆盖图像,我也需要添加。我在@2x (iPhone 4s)和R4 (iPhone 5 5s 5c)中已经有了这些图片。我已经创建了新分辨率大小的图像,但我不确定如何将它们添加到图像集中。
当我进入资产目录时,我可以在图像集中选择特定于设备,我看到iPhone、retina-4和iPad的条目。有1x,2x,Retina 42x和3x的拖放井。
我的问题是,我应该把iPhone 6的图片放在哪里?很明显,3x是给6+的。我不明白为什么retina-4可以同时用于iPhone 5和iPhone 6,因为这两款手机的屏幕尺寸是不同的。
我遗漏了什么?
发布于 2014-10-04 12:37:08
我相当确定这是Xcode6中的一个错误。当您从资产目录图像集中加载图像时,无论您是在缩放模式还是标准显示模式下,您都将始终获得iPhone 6+的3x条目。对于iPhone 6,您将始终在两种模式下获得2x条目。对于iPhone 4s,您还将获得2x条目。
所有这些设备都有不同的缩放比例和纵横比,因此这对于像素精确的图像是不可接受的。我的图像都是全屏的,应该是覆盖的,所以我在缩放模式下看到了错误的位置。
我通过创建两个图像集解决了这个问题:
1)标准模式下的iPhone 6/6 6plus
1242x2208 image in the 3x entry 750x1334 in the 2x entry 2) iPhone 6/6 6Plus,采用缩放模式或iPhone 5
1125x2001 for the 3x entry 640x1136 for the 2x entry 640x1136 for the R4-2x entry 为此,我需要确定该设备是否为新设备之一,以及它们是否处于缩放模式。根据这些信息,我从正确的图像集中加载图像。
这是我用来确定该设备是否是缩放/标准模式下的新设备的代码:
UIScreen *screen = [UIScreen mainScreen];
if (screen.scale == 3 && screen.currentMode.size.width == 1242 ||
screen.scale == 2 && screen.currentMode.size.width == 750) {
self.overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"StdImageSet"]];
} else {
self.overlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ZoomedImageSet"]];
}这很难看,我讨厌不得不这样做,因为图像集应该消除这种代码。我没有看到更好的方法来解决这个问题,我已经提交了一个雷达(雷达18463463)错误。
发布于 2014-09-22 20:16:21
我发现这很有帮助:http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
似乎iPhone 6将使用重新采样的@2x (iPhone 5)图像。此外,图像集的属性(实用程序窗格)允许您在“通用”(x1、x2、x3)和“特定于设备”的图像井之间切换。
发布于 2015-03-16 15:51:53
这真的很烦人。对于特定于设备的设置,我们都希望看到一个类似于LaunchImage Set的菜单,不同的屏幕大小对应不同的占位符。
https://stackoverflow.com/questions/25954706
复制相似问题