我相當確定這是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