2014-09-21 32 views
31

我正在嘗試爲新的6和6+設備更新我的應用程序。Xcode 6特定於設備的資產目錄

我已經爲新的iPhone尺寸(6和6+)添加了啓動圖像。資產目錄中有6個和6+的條目。那裏沒問題。

我也有一些全屏視圖疊加圖像,我需要添加以及。我在@ 2x(iPhone 4s)和R4(iPhone 5 5s 5c)中已經有了這些圖片。我以新的分辨率尺寸創建了圖像,但我不確定如何將它們添加到圖像集中。

當我進入資產目錄時,可以在圖像集中選擇特定設備,並查看iPhone,retina-4和iPad的條目。有1x,2x,Retina 4 2x和3x的拖放孔。

我的問題 - 我應該在哪裏放置iPhone 6的圖像?顯然,3x是6加。我沒有看到視網膜4可以用於iPhone 5和iPhone 6,因爲屏幕尺寸不同。

我錯過了什麼?

+0

也許擴展了Xcode 6及以上版本的問題的主題? (看我的答案,找出我爲什麼建議它) – 2015-08-19 11:28:57

回答

5

我發現這是很有幫助:http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

似乎是iPhone 6將採用重新採樣@ 2倍(iPhone 5)的圖像。此外,圖像集的屬性(實用程序窗格)允許您在「通用」(x1,x2,x3)和「設備特定」圖像孔之間切換。

+2

是的,這是一個有用的解釋如何6+規模。不過,我相信這並不能回答我的問題。經過實驗後,我發現在Xcode 6.0.1中,iPhone 6圖像應該進入\ @ 2×井。我認爲這是一個錯誤,因爲現在沒有地方可以放置用於iPhone 4s的2倍圖像(它仍然支持iOS8) 此外,圖像集中沒有放置圖像的位置顯示iPhone 6和6+的縮放模式。 – 2014-09-26 00:43:27

+0

我正在構建一款通用應用程序,根據鏈接中的說明,我的iPhone 5/5s和iPhone 6圖像都是從Retina 4 2x拍攝的(320x568點)拍攝的。這與用於iPhone 4s的2x井是分開的。在渲染之前,iPhone 6圖像被上採樣到750x1334像素。 – 2014-09-26 07:20:40

+2

@KurtSchwartz,我站在更正。發佈我的評論後,我進行了雙重檢查,iPhone 6確實使用了適用於iPhone 4s的2x圖像 - 而不是來自Retina 4 2x的圖像。 PaintCode鏈接看起來是錯誤的,它看起來像一個小錯誤。然而,它並沒有太大的區別 - 無論是在iPhone 6(放大)還是其他型號之間共享圖像。 – 2014-09-26 07:43:24

6

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

+1

謝謝你。我拉着頭髮試圖瞭解爲什麼6+在縮放模式下加載全尺寸圖像。 – Malakim 2015-01-14 20:31:42

+0

謝謝你。這非常令人沮喪。我擔心的是,Xcode現在已經更新了iWatch,但沒有修復這個bug的跡象。它必須是一個錯誤,正確的...?我將它報告爲一個。希望他們能解決這個問題。 – pingin 2015-05-13 22:40:14

1

剛剛爲此問題找到了一個新的解決方案。使用2倍的視網膜4圖像,並設置全屏圖像視圖的內容模型來擴展方面填充將使它在iPhone 4s和iPhone 6上工作。

+4

這不是一個好的解決方案,因爲它可能會讓圖像變形。 – Ali 2015-03-31 16:18:13

5

這真的很煩人。對於特定於設備的設置,我們都希望像LaunchImage Set這樣的菜單,不同的佔位符適用於不同的屏幕尺寸。

5

我在這裏把我的一些看法,我沒有爲iPhone設備(也許有人會發現它的幫助)的:

  1. iPhone 4S - 2x Any/Any瓷磚
  2. iPhone 5 - 2x 1GB/Any
  3. iPhone 5S - 2x 1GB/Any
  4. iPhone 6 - 2x 1GB/Any瓷磚
  5. iPhone 6加 - 3x 1GB/Any瓷磚

爲了達到這個目的,我檢查了Devices - iPhone,Memory 1GB。正如你可以看到iPhone 5/5S/6之間沒有圖形的區別。也許玩Metal 1v2/2v2的設置可能會有所區別,但這看起來對我來說太瘋狂了。 Knowledge reference starts at 10:50

我現在從WWDC那裏得到了什麼,我們應該不要考慮解決方案/設備/設備方向的細節問題,而是要關注尺寸類別(除了6 Plus以外,iPhone尺寸類別相同),但如果有人仍然出於某種原因,需要該設備特定的圖形,並希望使用資產目錄(這是偉大的),然後在這裏你得到我目前發現的(Xcode 7)。

+3

與您一致,無法區分iPhone 5/5S/6是完全不可思議的 – hash3r 2015-10-16 16:08:38