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ı?
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ı?
Yanıtlar:
İ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.
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.
[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
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.
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
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 nativeScale
ve scale
aynı 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.
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"
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 File
menü ve seçim New
⟶ File...
⟶ iOS
⟶ User Interface
⟶ Launch Screen
.
Ardından üzerine tıklayarak projenizin ayarlarını açın .
Gelen General
sekmesi denilen bölümde App Icons and Launch Images
, set Launch Screen File
yeni oluşturduğunuz dosyaları (bu ayarlar için UILaunchStoryboardName
de 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:
Projenizi Öğe Kataloğu yerine Başlatma Ekranı xib dosyasını kullanacak şekilde yapılandırma:
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 CALayers
piksellerle 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, nativeBounds
simü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
( nativeScale
ve nativeBounds
) 'e API ekledi .CADisplay
UIScreen
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.
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
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.