我相当确定这是Xcode 6中的一个bug。当您从资产目录图像集加载图像时,无论您是放大还是标准显示模式,您都将获得iPhone 6 +的3x条目。对于iPhone 6,您将在两种模式下始终获得2x条目。对于iPhone 4s,您还将获得2x条目。
所有这些设备具有不同的缩放比例和纵横比,因此这对于像素精确的图像是不可接受的。我的图像全部都是全屏幕,并且是覆盖图,所以我在放大模式下看到了不正确的位置。
我工作解决此问题通过创建两个图像集:
1)iPhone 6 /在标准模式下6plus在3×条目
750x1334在2×条目
1242x2208图像) iPhone 6/6Plus在缩放模式或iPhone 5
1125x2001为3×条目
640x1136为2×条目
640x1136用于R 4-2x条目
为了做到这一点,我需要确定设备是否是新设备之一,以及它们是否处于缩放模式。基于这些信息,我从正确的图像集中加载图像。
这是我使用,以确定该设备是否在放大/标准模式中的新的一个的代码:
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)的bug。
也许扩展了Xcode 6及以上版本的问题的主题? (看我的答案,找出我为什么建议它) – 2015-08-19 11:28:57