2014-09-24 48 views
0

Apple's HIG具有下面要說的關於圖形資源的iPhone:iPhone 6 - 使用尺寸精確的圖像通過命名約定

支持Retina顯示屏。確保您爲應用中的所有圖稿和圖形提供高分辨率素材資源。特別是,爲iPhone 6 Plus提供@ 3x資產和爲所有其他高分辨率iOS設備提供@ 2x資產。

以原始長寬比顯示照片和圖形,並且不會將它們縮放大於100%。您不希望應用中的圖形或圖形看起來偏斜或太大。讓用戶選擇是否要放大或縮小圖像。

望着這和其他相關人士,我認爲,對於一般圖形資源,在iPhone 6將於640x1136大小相同@ 2X視網膜圖像,並加以推廣,以自己的750x1334的大小。它是否正確?

我想知道的是,是否有一種簡單的方法(例如通過一些命名參數,例如@ 2x或-568h)將單獨的資產包括在750x1334尺寸和FORCE iPhone 6設備中,以使用它們而不是放大640x1136資產。

注意:我知道這可以通過在代碼中識別設備,可能定義一個類別,並根據設備指向特殊圖像來完成。只是想知道沒有編碼是否有更簡單的方法。

+0

可能重複的[如何指定iPhone 6定製的邊緣到邊緣圖像的大小?](http://stackoverflow.com/questions/25892207/how-to-specify-size-for-iphone-6-定製邊緣到邊緣圖像) – 2015-04-22 05:07:29

回答

1

我想提出一個假設,即命名約定如下:

視網膜顯示屏,> iPhone 4S

[email protected]~iphone.png 

視網膜顯示iPhone 6加:

[email protected]~iphone.png 

注:iPhone 6加不是原尺寸屏幕的3倍。它是2.34,所以當你創建44x44實際像素的1到1像素資產時,意思是在視網膜上是88x88,而在iPhone 6上是103x103。但是,您應該將額外的屏幕尺寸用於不同的用戶界面/用戶界面,而不僅僅是放大元素的大小。

保持現有尺寸不縮放的方法將在這些圖像資源上固定自動佈局,確保這些圖像受到x1尺寸的限制。就像如果你的形象是在X1 32pixels方:

UIImageView *imageView= [[UIImageView alloc] initWithFrame:CGRectZero]; 
imageView.translatesAutoresizingMaskIntoConstraints = NO; 
imageView.image=[UIImage imageNamed:@"your_image"]; 
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[image(32)]" options:0 metrics:0 views:@{@"image":@(imageView)]]; 
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[image(32)]" options:0 metrics:0 views:@{@"image":@(imageView)]]; 

和使用您的@ 2倍3倍@圖像,問題是,如果蘋果不具備的資源它將高檔退而求其次一個@ 3X命名的圖像@ 2x圖像。因此,可能無法輕鬆避免這種情況。我有點希望蘋果會刪除基本的x1大小,現在手機有不同的分辨率。我更喜歡一對一的pxiel測量慣例。

就像蘋果希望你那樣工作,使用autolayout作爲約定。以上應該保持圖像相同,我得到一個iPhone加上以後,所以會測試出來。

+0

感謝elliotrock,我知道定期的2x和3x規範。我試圖弄清楚的是:iPhone 6現在會自動使用爲iPhone 5屏幕尺寸製作的資產,然後進行擴展。有沒有辦法避免這種情況,並通過命名約定,強制iPhone 6使用適合自己屏幕尺寸的資產。 – Madhu 2014-09-24 10:14:41

+0

添加到我的回答@Madhu – elliotrock 2014-10-02 01:01:44

+0

感謝您的詳細信息@elliotrock,我認爲這是關於儘可能接近這個查詢得到最終答案。無法在實際設備上使用我的手,因此,如果在檢查時確定事情沒有問題,請告訴我。 – Madhu 2014-10-06 10:16:18