iPhone 6 Plus çözünürlük karışıklığı: Xcode veya Apple'ın web sitesi? geliştirme için


265

Apple'ın web sitesi, çözünürlüğün 1080p olduğunu iddia ediyor: 1920 x 1080

Bununla birlikte, Xcode (bugün başlatılan 8.0 GM) için gereken başlatma ekranı 2208 x 1242'dir.

Kim haklı?

Xcode


İPhone 6+ için lansman görüntüleri 1242x2208 ve 2208x1242 olmalıdır. En azından bu, simülatörde uygulamaların düzgün çalışmasını sağlar (ve bu, HIG'de belgelenir). Bunun 1920x1080'in varsayılan fiziksel ekran boyutundan neden farklı olduğunu anlamadım.
rmaddy

2
çok tuhaf bir tutarsızlık.
JasonGenX


Bu, Xcode 6.1'in kararlı sürümünde değişebilir. Bu mu?
Jayprakash Dubey

3
Andreas bağlantıyı güncellemek için "The Ultimate Guide iPhone'a Kararlar" bkz paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
David James

Yanıtlar:


308

İPhone 6+, 2208 × 1242 ( 736x414 puanla) sanal çözünürlükte @ 3x varlıkları kullanarak dahili olarak işler , ardından bunu görüntülemek için örnekler. Retina MacBook'ta ölçeklendirilmiş bir çözünürlük kullanmakla aynıdır - bu, örneğin 12 pt metnin ekranda aynı boyutta görünmesine rağmen, piksel varlıkları için ayrılmaz bir çarpana çarpmalarını sağlar.

Yani, evet, başlatma ekranlarının bu boyutta olması gerekir.

Matematik:

6, 5s, 5, 4s ve 4'ün hepsi inç başına 326 pikseldir ve önceki tüm cihazların inç başına yaklaşık 160 noktasına yapışmak için @ 2x varlıklarını kullanır.

6+, inç başına 401 pikseldir. Bu yüzden kabaca 2.46x aktiflere ihtiyaç duyacaktır. Bunun yerine Apple, @ 3x varlıklarını kullanır ve tüm çıktıyı doğal boyutunun yaklaşık% 84'üne kadar ölçeklendirir.

Uygulamada Apple,% 87 gibi daha fazlasıyla gitmeye karar verdi ve 1080'i 1242'ye dönüştürdü. Şüphesiz, her iki yönde hala entegre boyutlar üreten% 84'e mümkün olduğunca yakın bir şey bulmaktı - 1242/1080 = 2208/1920 1080’ü 1286’ya çevirirseniz iyi ölçeklendirmek için bir şekilde dikey olarak 2286.22 piksel oluşturmanız gerekir.


6
Bunu nasıl hesapladınız-> "2208 × 1242 sanal çözünürlüğü (736x414 puanla)" ve bu "kabaca @ 2.46x varlıklara ihtiyaç duyuyor" UIScreen mainScreen'in. 568, 568 * 3 (1704) veya 1920.
msk

1
Belki de lansman görüntüleri hakkında bu cevaba bir not ekleyin? (Hannes'in cevabına bakın) Mevcut uygulamaların yeni sürüme geçirilmesinin akılda tutulması yararlıdır (aksi takdirde 320x576 @ 3x'te çalışır - Bir süre kafam karıştı!)
Joseph Humfrey

2
@msk [UIScreen mainScreen].bounds.size.height, portredayken iPhone 6+ simülatöründe 736 döndürür. Bu 2208 değerinin 3 ölçeğine bölünmesiyle elde edilmiştir. Genişlik
414'tür.

1
1242 * 2208 çözünürlüğünde @ 3x ile tam olarak aynı boyutta değil,% 6 gerilmiş.
Binarian

4
Ne korkunç bir çamur! Bazı API düzeyinde boyut ayarlamalarını biraz daha basit hale getirmek için sistem genelinde performans ve bellek ve keskinlik kaybı! Sanırım iPhone 7 Plus'ı 5.5 "461 ppi ekran ile piyasaya sürdüklerinde her şey mantıklı olacak.
sup

114

Cevap, eski uygulamaların 2208 x 1242 Yakınlaştırılmış Modda çalışmasıdır. Ancak yeni telefonlar için bir uygulama oluşturulduğunda mevcut çözünürlükler şunlardır: Super Retina HD 5.8 (iPhone X) 1125 x 2436 (458ppi) , Retina HD 5.5 ( iPhone 6, 7, 8 Plus ) 1242 x 2208 ve Retina HD 4.7 ( iPhone 6 ) 750 x 1334 . Bu, soruda bahsedilen karışıklığa neden oluyor. Yeni telefonların tam ekran boyutunu kullanan uygulamalar oluşturmak için 1122 x 2436, 1242 x 2208, 2208 x 1242 ve 750 x 1334 boyutlarında LaunchImages ekleyin.

Yeni iPhone 11, 11 Pro, 11 Pro Max için güncellendi

Boyut Pro Max iPhone 11 ile @ 3x : ölçekleme, uzay koordinat 414 x 896 sayı ve 1242 x 2688 piksel, 458 ppi, cihaz, gerçek boyut 3.06 x 6.22 ya da 77.8 x 158.0 mm 'dir. 6,5 inç Super Retina XDR ekran.

Boyut iPhone Pro 11 ile @ 3x ölçekleme, koordinat boşluğunda: 375 x 812 sayı 1125 x 2436 piksel, 458 ppi, cihaz, gerçek boyut 2.81 x 5.67 ya da 71.4 x 144.0 mm 'dir. 5.8 "Süper Retina XDR ekran.

Boyut iPhone 11 ile 2x @ ölçeklendirme, koordinat boşluğunda: 414 x 896 sayı 828 x 1792 piksel, 326 ppi, cihaz, gerçek boyut 2.98 x 5.94 ya da 75.7 x 150.9 mm 'dir. 6.1 "Sıvı Retina HD ekran.

Boyut iPhone X🅂 Max ile @ 3x ölçekleme (Elma ismi: Süper Retina HD 6.5 ekran" ):, uzay koordinat 414 x 896 puan ve 1242 x 2688 piksel, 458 ppi, cihaz fiziksel boyutu 3.05 x 6.20 veya 77.4 x 157.5 olduğunu mm.

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅂 Max Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 1242.0, 2688.0), scale: 3.0

Boyut iPhone X🅁 ile @ 2x ölçekleme (Elma ismi: Süper Retina HD 6.1" ekran ):, uzay koordinat 414 x 896 puan ve 828 x 1792 piksel, 326 ppi, cihaz fiziksel boyutu 2.98 x 5.94 veya 75.7 x 150.9 mm .

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅁 Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 828.0, 1792.0), scale: 2.0

Boyut iPhone X🅂 ve iPhone X ile @ 3x ölçekleme (Elma adı: Süper Retina HD 5.8" ekran ):, uzay koordinat 375 x 812 puan ve 1125 x 2436 piksel, 458 ppi, cihaz fiziksel boyutu 2.79 x 5,65 veya 70.9 olduğunu x 143,6 mm.

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X🅂 and X Screen bounds: (0.0, 0.0, 375.0, 812.0), Screen resolution: (0.0, 0.0, 1125.0, 2436.0), scale: 3.0

resim açıklamasını buraya girin

Boyut iPhone 6, 6S, 7 ve 8 ile @ 3x ölçekleme (Elma ismi: Retina HD 5.5 ), koordinat boşluğunda 414 x 736 sayı ve 1242 x 2208 piksel, 401 ppi, ekran fiziksel büyüklüğü 2.7 x 4,8 veya 68 x 122 mm . Yakınlaştırılmış Modda çalışırken, yani yeni LaunchImages olmadan veya iPhone 6 Plus'ta Kurulum'da seçildiğinde, yerel ölçek 2.88'dir ve ekran iPhone 5 yerel boyutu olan 320 x 568 noktadır:

Screen bounds: {{0, 0}, {414, 736}}, Screen resolution: <UIScreen: 0x7f97fad330b0; bounds = {{0, 0}, {414, 736}};
mode = <UIScreenMode: 0x7f97fae1ce00; size = 1242.000000 x 2208.000000>>, scale: 3.000000, nativeScale: 3.000000

@ 2x ölçeklendirmeli (Apple adı: Retina HD 4.7 ) iPhone 6 ve iPhone 6S için boyut , koordinat alanı: 375 x 667 nokta ve 750 x 1334 piksel, 326 ppi, ekran fiziksel boyutu 2,3 ​​x 4,1 inç veya 58 x 104 mm'dir . Yakınlaştırılmış Modda, yani yeni LaunchImages olmadan çalışırken, ekran iPhone 5 yerel boyutu olan 320 x 568 noktadır:

Screen bounds: {{0, 0}, {375, 667}}, Screen resolution: <UIScreen: 0x7fa01b5182d0; bounds = {{0, 0}, {375, 667}};
mode = <UIScreenMode: 0x7fa01b711760; size = 750.000000 x 1334.000000>>, scale: 2.000000, nativeScale: 2.000000

Ve karşılaştırma için iPhone 5 640 x 1136, iPhone 4 640 x 960.


İşte bunu kontrol etmek için kullandığım kod (nativeScale'in yalnızca iOS 8'de çalıştığını unutmayın):

UIScreen *mainScreen = [UIScreen mainScreen];
NSLog(@"Screen bounds: %@, Screen resolution: %@, scale: %f, nativeScale: %f",
          NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale);

Not: LaunchImages'ı yükleyin, aksi takdirde uygulama Yakınlaştırılmış Modda çalışır ve doğru ölçeklendirmeyi veya ekran boyutlarını göstermez. Yakınlaştırılmış Modda nativeScaleve scaleaynı olmayacaktır. Gerçek bir cihazda Ölçek, Yakınlaştırılmış Modda çalışmıyor olsa bile iPhone 6 Plus'ta 2.608 olabilir, ancak simülatörde çalışırken 3.0 ölçeğini gösterecektir.

İPhone 6 ve 6 Plus'ı Karşılaştırma


3
Sanırım yeni lansman görüntüsü sürümlerini eklemediniz. Muhtemelen uygulama "uyumluluk modunda" çalışır ve ekran sınırları her iki cihazdaki eski 320x576'dır.
Daniel Rinser

3
Yeni lansman görüntü boyutlarını ekler eklemez, doğru (mantıksal) ekrana bağlı boyutları elde edersiniz: iPhone 6 için 375x667 ve 6+ için 414x736.
Daniel Rinser

1
@DanielRinser Bunun için teşekkürler. Ben deneyeceğim.
Sverrisson

@DanielRinser başlangıç ​​resimleriniz için teşekkür ederiz. Cevabı girdinize göre güncelledim.
Sverrisson

ve iPhone 4 için varlıklar ne olacak? Nasıl adlandırılmalı ve onlar için yer yoksa bunları varlık kataloğuna nasıl koyabilirim? Varlıklar kataloğunda iPhone görüntüleri için 3 yuva bulunur: 1x, 2x ve 3x. İPhone 6 ve 6+ varlıkları için 2x ve 3x ise, iPhone 4 varlıklarını 1x'e koyar mıyız? Ben öyle düşünmüyorum.
Ördek

96

Gerçek / fiziksel iPhone 6 Plus çözünürlüğü 1920x1080'dir, ancak Xcode'da arayüzünüzü 2208x1242 çözünürlük (736x414 puan) için yaparsınız ve cihazda otomatik olarak 1920x1080 piksele ölçeklendirilir.

iPhone çözünürlükleri hızlı başvuru:

Device          Points    Pixels     Scale  Physical Pixels   PPI   Ratio   Size
iPhone XS Max   896x414   2688x1242  3x     2688x1242         458   19.5:9  6.5"
iPhone XR       896x414   1792x828   2x     1792x828          326   19.5:9  6.1"
iPhone X        812x375   2436x1125  3x     2436x1125         458   19.5:9  5.8"
iPhone 6 Plus   736x414   2208x1242  3x     1920x1080         401   16:9    5.5"
iPhone 6        667x375   1334x750   2x     1334x750          326   16:9    4.7"
iPhone 5        568x320   1136x640   2x     1136x640          326   16:9    4.0"
iPhone 4        480x320   960x640    2x     960x640           326   3:2     3.5"
iPhone 3GS      480x320   480x320    1x     480x320           163   3:2     3.5"

iPhone çözünürlükleri


3
Güzel ve basit bir cevap. Teşekkürler Leszek.
SJ Lim

46

Muhtemelen iOS 8'de başlatma görüntülerini kullanmayı bırakmalı ve bir storyboard veya nib / xib kullanmalısınız.

  • In Xcode 6 açmak Filemenü ve seçim NewFile...iOSUser InterfaceLaunch Screen.

  • Ardından üzerine tıklayarak projenizin ayarlarını açın .

  • Gelen Generalsekmesi denilen bölümde App Icons and Launch Images, set Launch Screen Fileyeni oluşturduğunuz dosyaları (bu ayarlar için UILaunchStoryboardNamede info.plist).

Simülatörün sadece siyah bir ekran göstereceğini unutmayın, bu yüzden gerçek bir cihazda test etmeniz gerekir .

Projenize bir Başlatma Ekranı xib dosyası ekleme:

Yeni bir Başlatma Ekranı xib dosyası ekleme

Projenizi Öğe Kataloğu yerine Başlatma Ekranı xib dosyasını kullanacak şekilde yapılandırma:

Projeyi Başlatma Ekranı xob kullanacak şekilde yapılandırma


1
Neredeyse mükemmel talimatlar, ama Dosya -> YENİ -> Dosya ... vb olmalıdır. İkinci dosyayı bulmak için biraz zaman aldı :) Yardımınız için teşekkürler!
Will

Bunların nasıl iyi görünmesini sağlıyorsunuz? Üzerine bir görüntü koymaya çalıştığımda çok sakat oluyor.
badweasel

Yalnızca bir görüntü görüntülemiyorsanız ve yükleme için kullanıcı arayüzünü göstermek istiyorsanız, bu iyi bir fikirdir, çünkü bir görüntü bir storyboard'da olsun veya olmasın, yine de uygun boyutlarda olması gerekir. Benzer şekilde koddaki görüntüyü çizebilirseniz, sanırım yuvarlak olabilir.
AppHandwerker

Lansman xib'leri geriye dönük olarak uyumlu olmadığı için iOS 8'den önce herhangi bir şeyi destekliyorsanız, yine de görüntü dosyaları sağlamanız gerekir.
Mark Bridges

24

Fiziksel cihazda, iPhone 6 Plus'ın ana ekranının sınırları 2208x1242 ve nativeBounds 1920x1080'dir . Fiziksel ekrana yeniden boyutlandırmak için donanım ölçeklemesi vardır.

Simülatörde, iPhone 6 Plus'ın ana ekranının sınırları ve nativeBounds'ın ikisi de 2208x1242'dir.

Başka bir deyişle ... Videolar, OpenGL ve CALayerspiksellerle yapılan bu anlaşmaya dayanan diğer şeyler , cihazdaki gerçek 1920x1080 çerçeve tamponuyla (veya sim'de 2208x1242 ) ilgilenir . Puanlarla ilgili şeyler 2208x1242UIKit ile başa çıkacak (x3) sınırları ve cihazda uygun şekilde ölçeklendirilecektir.

Simülatörün cihazdaki ölçeklendirmeyi yapan aynı donanıma erişimi yoktur ve donanımdan farklı sonuçlar üretecekleri için yazılımda simüle etmenin pek bir yararı yoktur. Bu nedenle, nativeBoundssimüle edilmiş bir cihazın ana ekranının fiziksel cihazın ana ekranının sınırlarına ayarlanması mantıklıdır .

iOS 8 , bir geliştiricinin buna karşılık gelen çözünürlüğünü belirlemesine izin vermek için UIScreen( nativeScaleve nativeBounds) 'e API ekledi .CADisplayUIScreen


13

Benim gibi eski uygulamaların nasıl ele alındığını merak edenler için, bu konuda biraz test ve hesaplama yaptım.

@ Hannes-sverrisson ipucu sayesinde, eski bir uygulamanın iPhone 6 ve iPhone 6 plus'ta 320x568 görünümüyle işlendiği varsayımına başladım.

Test basit bir siyah arka planla yapıldı bg@2x.png beyaz kenarlıklı . Arka plan 640x1136 piksel boyutunda ve 1 piksel iç beyaz kenarlığa sahip siyahtır.

Simülatör tarafından sağlanan ekran görüntüleri aşağıdadır:

İPhone 6 ekran görüntüsünde, beyaz kenarlığın üstünde ve altında 1 piksel kenar boşluğu ve iPhone 6 plus ekran görüntüsünde 2 piksel kenar boşluğu görebiliriz. Bu bize verir kullanılan yerine 750x1334 arasında yerine iPhone 6 ile ilgili 1242x2208 ve 750x1332 arasında, iPhone 6 1242x2204 alanını artı.

Bu ölü piksellerin iPhone 5 en boy oranına uyması gerektiğini varsayabiliriz:

iPhone 5               640 / 1136 = 0.5634
iPhone 6 (used)        750 / 1332 = 0.5631
iPhone 6 (real)        750 / 1334 = 0.5622
iPhone 6 plus (used)  1242 / 2204 = 0.5635
iPhone 6 plus (real)  1242 / 2208 = 0.5625

İkincisi, @ 2x kaynaklarının sadece iPhone 6 plus'ta (@ 3x varlıklarını beklemektedir) değil, aynı zamanda iPhone 6'da da ölçekleneceğini bilmek önemlidir. Bunun nedeni, kaynakların ölçeklenmemesinin beklenmedik düzenlere yol açmasıdır görünümün genişlemesine.

Ancak, bu ölçeklendirme genişlik ve yükseklik bakımından eşdeğer değildir. Bir 264x264 @ 2x kaynağı ile denedim. Sonuçlar göz önüne alındığında, ölçeklemenin piksel / nokta oranıyla doğru orantılı olduğunu varsaymak zorundayım.

Device         Width scale             Computed width   Screenshot width
iPhone 5        640 /  640 = 1.0                        264 px
iPhone 6        750 /  640 = 1.171875  309.375          309 px
iPhone 6 plus  1242 /  640 = 1.940625  512.325          512 px

Device         Height scale            Computed height  Screenshot height
iPhone 5       1136 / 1136 = 1.0                        264 px
iPhone 6       1332 / 1136 = 1.172535  309.549          310 px
iPhone 6 plus  2204 / 1136 = 1.940141  512.197          512 px

İPhone 6 ölçeklendirmesinin genişlik ve yükseklik açısından aynı olmadığını unutmayın. (309x310). Bu, yukarıdaki teorinin ölçeklendirmenin genişlik ve yükseklik açısından orantılı olmadığını, ancak piksel / nokta oranını kullandığını doğrular.

Umarım bu yardımcı olur.


12

Bu veri grafiğine göz atın: http://www.paintcodeapp.com/news/iphone-6-screens-demystified

Eski iPhone'lar, iPhone 6 ve iPhone 6 Plus arasındaki farkları açıklıyor. Ekran boyutlarının noktalarda, oluşturulan piksellerde ve fiziksel piksellerde karşılaştırmasını görebilirsiniz. Ayrıca sorunuzun yanıtını burada bulacaksınız:

iPhone 6 Plus - Retina ekran HD ile. Ölçekleme faktörü 3'tür ve görüntü daha sonra oluşturulan 2208 × 1242 pikselden 1920 × 1080 piksele küçültülmüştür.

Küçültme oranı 1920/2208 = 1080/1242 = 20 / 23'tür. Bu, orijinal oluşturmadaki her 23 pikselin 20 fiziksel piksele eşlenmesi gerektiği anlamına gelir. Başka bir deyişle, görüntü orijinal boyutunun yaklaşık% 87'sine küçültülür.

Güncelleme:

Yukarıda bahsi geçen Infographic'nin güncellenmiş bir sürümü var. Ekran çözünürlüğü farkları hakkında daha ayrıntılı bilgi içerir ve şu ana kadar 4 inçlik cihazlar da dahil olmak üzere tüm iPhone modellerini kapsar.

http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions


Öyleyse kenar yumuşatma kapalıyken bile ölçek küçültmede devam eden isteğe bağlı kenar yumuşatma var mı?
Sam

Bu Infographic 4 inç ekran dahil olsaydı harika olurdu.
Rajesh

@Rajesh Cevabımı güncelledim, 4 inç cihazlar hakkında bilgi için şimdi kontrol edin.
Darrarski

4

Genelde John Gruber'ın Daring Fireball blogunun tonunu beğenmese bile, Daha Büyük iPhone Ekran Konjeksiyonu okunmaya değer.

Tahmin etti ama tam olarak anladı her iki model için de nokta ve piksel cinsinden çözünürlüğü doğru buldu, ancak (ben de) Apple'ın daha küçük bir çözünürlük göstermesini ve ölçeklendirmesini beklememesi (ayrıntılar @ Tommy'nin cevabında).

Her şeyin özü, kişinin piksel cinsinden düşünmeyi bırakması ve noktalar açısından düşünmeye başlamasıdır (bu oldukça uzun süredir böyledir, yeni bir buluş değildir) ve sonuç olarak UI öğelerinin fiziksel boyutu. Kısacası, her iki yeni iPhone modeli de fiziksel olarak çoğu öğe aynı boyutta kaldığından bu konuda gelişir, sadece daha fazla ekrana sığabilirsiniz (daha büyük her ekran için daha fazla sığabilirsiniz).

Daha büyük model için dahili çözünürlüğü gerçek ekran çözünürlüğü 1: 1 ile eşleştirmedikleri için biraz hayal kırıklığına uğradım.


noktalarda düşünüyoruz ama ne yazık ki Photoshop'ta piksel olarak görüntüler oluşturmalıyız ... 😃
Ördek

2
Pikseller birçok nedenden dolayı çoğumuz için önemlidir. Apple bu konuda kendi düşünce polisliğini yaparken, çok iyi nedenlerden dolayı iOS8'e [UIScreen nativeBounds] 'u gönülsüzce eklediler.
ctpenrose

Evet, pikseller de önemlidir, ancak görüntüler gibi statik varlıklar için (açılış ekranları ve benzeri). Demek istediğim (pun amaçlı) uygulama ekranının düzeni içindi, işler dinamik olarak çizildi.
rawpower
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.