Độ phân giải iPhone 6 Plus: Xcode hay trang web của Apple? cho sự phát triển


265

Trang web của Apple tuyên bố rằng độ phân giải là 1080p: 1920 x 1080

Tuy nhiên, màn hình khởi chạy theo yêu cầu của Xcode (8.0 GM ra mắt ngày hôm nay) là 2208 x 1242.

Ai đúng

Xcode


Hình ảnh khởi chạy cho iPhone 6+ phải là 1242x2208 và 2208x1242. Ít nhất điều này làm cho các ứng dụng hoạt động chính xác trong trình giả lập (và điều này được ghi lại trong HIG). Tôi đã không tìm ra lý do tại sao điều này khác với kích thước màn hình vật lý được cho là 1920x1080.
rmaddy

2
sự khác biệt rất lạ.
JasonGenX


Điều này có thể thay đổi trong phiên bản ổn định của Xcode 6.1. Là nó?
Jayprakash Dubey

3
Để cập nhật các liên kết từ Andreas, hãy xem phần "Ultimate Hướng dẫn cho iPhone Nghị quyết" paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions
David James

Câu trả lời:


308

IPhone 6+ kết xuất nội bộ bằng cách sử dụng tài sản @ 3x ở độ phân giải ảo 2208 × 1242 (với 736x414 điểm), sau đó lấy mẫu để hiển thị. Giống như sử dụng độ phân giải tỷ lệ trên MacBook Retina - nó cho phép chúng đạt được bội số tổng thể cho các tài sản pixel trong khi vẫn có văn bản ví dụ 12 pt trông giống kích thước trên màn hình.

Vì vậy, vâng, các màn hình khởi động cần phải có kích thước đó.

Các toán học:

6, 5s, 5, 4s và 4 đều là 326 pixel mỗi inch và sử dụng tài sản @ 2x để bám sát khoảng 160 điểm trên mỗi inch của tất cả các thiết bị trước đó.

6+ là 401 pixel mỗi inch. Vì vậy, theo giả thuyết, nó cần khoảng @ 2,46 lần tài sản. Thay vào đó, Apple sử dụng tài sản @ 3x và thu nhỏ sản lượng hoàn chỉnh xuống còn khoảng 84% kích thước tự nhiên.

Trong thực tế, Apple đã quyết định sử dụng hơn 87%, biến 1080 thành 1242. Không còn nghi ngờ gì nữa, đó là tìm ra thứ gì đó gần nhất có thể đến 84% mà vẫn tạo ra kích thước tách rời theo cả hai hướng - chính xác là 1242/1080 = 2208/1920 , trong khi nếu bạn biến 1080 thành 1286, bằng cách nào đó, bạn cần phải hiển thị 2286,22 pixel theo chiều dọc để mở rộng tốt.


6
Bạn đã tính toán nó như thế nào-> "độ phân giải ảo 2208 × 1242 (với 736x414 điểm)" và điều này "cần khoảng @ 2,46x tài sản" UIScreen mainScreen] .bound.size.height sẽ trở lại cho 6+? 568, 568 * 3 (1704) hoặc 1920.
msk

1
Có lẽ thêm một lưu ý cho câu trả lời này về hình ảnh khởi động? (xem câu trả lời của Hannes) hữu ích để gấu trong tâm trí cho các ứng dụng hiện đang được nâng cấp (nếu không nó chạy ở 320x576 @ 3x - Tôi đã nhầm lẫn trong một thời gian!)
Joseph Humfrey

2
@msk [UIScreen mainScreen].bounds.size.heighttrả về 736 trong trình giả lập iPhone 6+ khi ở chế độ dọc. Đây là giá trị 2208 chia cho tỷ lệ 3. Chiều rộng là 414.
rmaddy

1
Nó không chính xác cùng kích thước với @ 3x với độ phân giải 1242 * 2208, nó được kéo dài 6%.
Binary

4
Thật là một cặn bã khủng khiếp! Mất hiệu năng và bộ nhớ và độ sắc nét trên toàn hệ thống chỉ để thực hiện một số điều chỉnh kích thước cấp API đơn giản hơn một chút! Chà tôi đoán tất cả sẽ có ý nghĩa khi họ phát hành iPhone 7 Plus với màn hình 5,5 "461 ppi.
sup

114

Câu trả lời là các ứng dụng cũ hơn chạy ở Chế độ thu phóng 2208 x 1242. Nhưng khi một ứng dụng được xây dựng cho điện thoại mới, các độ phân giải có sẵn là: Super Retina HD 5.8 (iPhone X) 1125 x 2436 (458ppi) , Retina HD 5.5 ( iPhone 6, 7, 8 Plus ) 1242 x 2208Retina HD 4.7 ( iPhone 6 ) 750 x 1334 . Điều này gây ra sự nhầm lẫn được đề cập trong câu hỏi. Để xây dựng các ứng dụng sử dụng kích thước toàn màn hình của điện thoại mới, hãy thêm LaunchImages theo các kích thước: 1125 x 2436, 1242 x 2208, 2208 x 1242 và 750 x 1334.

Cập nhật cho iPhone mới 11, 11 Pro, 11 Pro Max

Kích thước cho iPhone 11 Pro Max với tỷ lệ @ 3x , không gian tọa độ: 414 x 896 điểm và 1242 x 2688 pixel, 458 ppi, kích thước vật lý của thiết bị là 3.06 x 6.22 in hoặc 77.8 x 158.0 mm. Màn hình XDR Super Retina 6.5 ".

Kích thước cho iPhone 11 Pro với tỷ lệ @ 3x , không gian tọa độ: 375 x 812 điểm và 1125 x 2436 pixel, 458 ppi, kích thước vật lý của thiết bị là 2,81 x 5,67 in hoặc 71,4 x 144,0 mm. Màn hình XDR Super Retina 5,8 ".

Kích thước cho iPhone 11 với tỷ lệ @ 2x , không gian tọa độ: 414 x 896 điểm và 828 x 1792 pixel, 326 ppi, kích thước vật lý của thiết bị là 2,98 x 5,94 in hoặc 75,7 x 150,9 mm. 6.1 "Màn hình Retina HD lỏng.

Kích thước cho iPhone X🅂 Max với tỷ lệ @ 3x (Tên Apple: màn hình Super Retina HD 6.5 " ), không gian tọa độ: 414 x 896 điểm và 1242 x 2688 pixel, 458 ppi, kích thước vật lý của thiết bị là 3.05 x 6.20 in hoặc 77.4 x 157.5 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

Kích thước cho iPhone X🅁 với tỷ lệ @ 2x (tên Apple: màn hình Super Retina HD 6.1 " ), không gian tọa độ: 414 x 896 điểm và 828 x 1792 pixel, 326 ppi, kích thước vật lý của thiết bị là 2,98 x 5,94 in hoặc 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

Kích thước cho iPhone X🅂iPhone X với tỷ lệ @ 3x (tên Apple: màn hình Super Retina HD 5,8 " ), không gian tọa độ: 375 x 812 điểm và 1125 x 2436 pixel, 458 ppi, kích thước vật lý của thiết bị là 2,79 x 5,65 in hoặc 70,9 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

nhập mô tả hình ảnh ở đây

Kích thước cho iPhone 6, 6S, 7 và 8 với tỷ lệ @ 3x (tên Apple: Retina HD 5.5 ), không gian tọa độ: 414 x 736 điểm và 1242 x 2208 pixel, 401 ppi, kích thước vật lý màn hình là 2,7 x 4,8 hoặc 68 x 122 mm . Khi chạy ở Chế độ phóng to, tức là không có LaunchImages mới hoặc được chọn trong Cài đặt trên iPhone 6 Plus, tỷ lệ gốc là 2,88 và màn hình là 320 x 568 điểm, đó là kích thước gốc của iPhone 5:

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

Kích thước cho iPhone 6iPhone 6S với tỷ lệ @ 2x (tên Apple: Retina HD 4.7 ), không gian tọa độ: 375 x 667 điểm và 750 x 1334 pixel, 326 ppi, kích thước vật lý màn hình là 2,3 x 4,1 hoặc 58 x 104 mm . Khi chạy ở Chế độ phóng to, tức là không có LaunchImages mới, màn hình có kích thước 320 x 568 điểm, đó là kích thước gốc của iPhone 5:

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

iPhone 5 để so sánh là 640 x 1136, iPhone 4 640 x 960.


Đây là đoạn mã tôi đã sử dụng để kiểm tra điều này (lưu ý rằng localScale chỉ chạy trên iOS 8):

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

Lưu ý: Tải lên LaunchImages nếu không ứng dụng sẽ chạy ở Chế độ phóng to và không hiển thị tỷ lệ chính xác hoặc kích thước màn hình. Trong Chế độ phóng to, nativeScalescalesẽ không giống nhau. Trên một thiết bị thực tế, tỷ lệ có thể là 2.608 trên iPhone 6 Plus, ngay cả khi nó không chạy ở Chế độ thu phóng, nhưng nó sẽ hiển thị tỷ lệ 3.0 khi chạy trên trình giả lập.

So sánh iPhone 6 và 6 Plus


3
Tôi đoán bạn đã không thêm các phiên bản hình ảnh khởi động mới. Đó có thể là lý do tại sao ứng dụng chạy ở "chế độ tương thích" và giới hạn màn hình là 320x576 cũ trên cả hai thiết bị.
Daniel Rinser

3
Ngay sau khi bạn thêm kích thước hình ảnh khởi chạy mới, bạn sẽ có được kích thước giới hạn màn hình (logic) chính xác: 375x667 cho iPhone 6 và 414x736 cho 6+.
Daniel Rinser

1
@DanielRinser Cảm ơn vì điều đó. Tôi sẽ thử nó.
Sverrisson

@DanielRinser cảm ơn bạn đã đóng góp cho hình ảnh khởi động. Tôi đã cập nhật câu trả lời dựa trên đầu vào của bạn.
Sverrisson

và những gì về tài sản cho iPhone 4? Chúng nên được đặt tên như thế nào và làm thế nào để đưa chúng vào danh mục tài sản nếu không có chỗ trống cho chúng? Danh mục tài sản có 3 khe cắm cho hình ảnh iPhone: 1x, 2x và 3x. Nếu 2x và 3x dành cho tài sản iPhone 6 và 6+ thì chúng ta có đặt tài sản iPhone 4 không, trên 1x? Tôi không nghĩ vậy.
Vịt

96

Độ phân giải thực của iPhone 6 Plus là 1920x1080 nhưng trong Xcode, bạn tạo giao diện cho độ phân giải 2208x1242 (736x414 điểm) và trên thiết bị, nó được tự động thu nhỏ xuống 1920x1080 pixel.

iPhone độ phân giải tham khảo nhanh:

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"

độ phân giải iPhone


3
Trả lời đẹp và đơn giản. Cảm ơn Leszek.
SJ Lim

46

Có lẽ bạn nên ngừng sử dụng các hình ảnh khởi chạy trong iOS 8 và sử dụng bảng phân cảnh hoặc nib / xib.

  • Trong Xcode 6 , mở Filemenu và chọn NewFile...iOSUser InterfaceLaunch Screen.

  • Sau đó mở các cài đặt cho dự án của bạn bằng cách nhấp vào nó.

  • Trong Generaltab, trong phần gọi App Icons and Launch Images, thiết lập Launch Screen Fileđể các tập tin bạn vừa tạo ra (điều này sẽ thiết lập UILaunchStoryboardNametrong info.plist).

Lưu ý rằng hiện tại trình giả lập sẽ chỉ hiển thị màn hình đen, vì vậy bạn cần kiểm tra trên thiết bị thực .

Thêm tệp xib khởi động vào dự án của bạn:

Thêm tệp xib khởi chạy màn hình mới

Định cấu hình dự án của bạn để sử dụng tệp xib Launch Screen thay vì Danh mục tài sản:

Cấu hình dự án để sử dụng Launch Screen xob


1
Các hướng dẫn gần như hoàn hảo, nhưng nó phải là Tệp -> MỚI -> Tệp ... vv Mất một lúc để tìm tệp thứ hai :) Cảm ơn đã giúp đỡ!
Sẽ

Làm thế nào để bạn làm cho những cái nhìn tốt? Khi tôi cố gắng đặt một hình ảnh lên nó, nó sẽ rất khó khăn.
badweasel

Nếu bạn không chỉ hiển thị một hình ảnh và bạn muốn hiển thị UI để tải thì đây là một ý tưởng tốt, vì một hình ảnh vẫn cần phải có kích thước phù hợp bất kể nó có trong bảng phân cảnh hay không. Tương tự như vậy nếu bạn có thể vẽ hình ảnh trong mã thì bạn có thể có được vòng mà tôi cho là.
AppHandwerker

Bạn vẫn cần cung cấp các tệp hình ảnh nếu bạn hỗ trợ bất cứ điều gì trước iOS 8 vì các xibs khởi chạy không tương thích ngược.
Mark Bridges

24

Trên thiết bị vật lý, giới hạn màn hình chính của iPhone 6 Plus là 2208x1242 và bản gốc là 1920x1080 . Có tỷ lệ phần cứng liên quan để thay đổi kích thước để hiển thị vật lý.

Trên trình giả lập, giới hạn và bản gốc của màn hình chính của iPhone 6 Plus đều là 2208x1242.

Nói cách khác ... Video, OpenGL và những thứ khác dựa trên CALayersthỏa thuận với pixel đó sẽ xử lý bộ đệm khung 1920x1080 thực trên thiết bị (hoặc 2208x1242 trên sim). Những thứ liên quan đến điểm trong UIKitsẽ được xử lý với giới hạn 2208x1242 (x3) và được thu nhỏ khi thích hợp trên thiết bị.

Trình giả lập không có quyền truy cập vào cùng một phần cứng đang thực hiện chia tỷ lệ trên thiết bị và thực sự không có nhiều lợi ích để mô phỏng nó trong phần mềm vì chúng tạo ra kết quả khác với phần cứng. Do đó, điều hợp lý là đặt nativeBoundsmàn hình chính của thiết bị mô phỏng thành giới hạn của màn hình chính của thiết bị vật lý.

iOS 8 đã thêm API vào UIScreen( nativeScalenativeBounds) để cho phép nhà phát triển xác định độ phân giải CADisplaytương ứng với UIScreen.


13

Đối với những người như tôi, những người tự hỏi làm thế nào các ứng dụng cũ được xử lý, tôi đã làm một chút thử nghiệm và tính toán về chủ đề này.

Nhờ gợi ý @ hannes-sverrisson, tôi bắt đầu với giả định rằng một ứng dụng cũ được xử lý với chế độ xem 320x568 trong iPhone 6 và iPhone 6 plus.

Thử nghiệm được thực hiện với nền đen đơn giản bg@2x.pngvới viền trắng. Nền có kích thước 640x1136 pixel và có màu đen với viền trắng bên trong là 1 pixel.

Dưới đây là các ảnh chụp màn hình được cung cấp bởi trình giả lập:

Trên ảnh chụp màn hình iPhone 6, chúng ta có thể thấy lề 1 pixel ở trên và dưới của viền trắng và lề 2 pixel trên ảnh chụp màn hình iPhone 6 plus. Điều này mang lại cho chúng ta không gian sử dụng 1242x2204 trên iPhone 6 plus, thay vì 1242x2208 và 750x1332 trên iPhone 6, thay vì 750x1334.

Chúng tôi có thể giả định rằng những pixel chết đó có nghĩa là tôn trọng tỷ lệ khung hình của iPhone 5:

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

Thứ hai, điều quan trọng cần biết là tài nguyên @ 2x sẽ được thu nhỏ không chỉ trên iPhone 6 plus (dự kiến ​​tài sản @ 3x), mà còn trên iPhone 6. Điều này có thể là do không mở rộng tài nguyên sẽ dẫn đến bố cục không mong muốn, do để mở rộng tầm nhìn.

Tuy nhiên, tỷ lệ đó không tương đương về chiều rộng và chiều cao. Tôi đã thử nó với tài nguyên 264x264 @ 2x. Đưa ra kết quả, tôi phải giả định rằng tỷ lệ tỷ lệ thuận với tỷ lệ pixel / điể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

Điều quan trọng cần lưu ý là tỷ lệ iPhone 6 không giống nhau về chiều rộng và chiều cao (309x 310). Điều này có xu hướng xác nhận lý thuyết trên rằng tỷ lệ không tỷ lệ về chiều rộng và chiều cao, nhưng sử dụng tỷ lệ pixel / điểm.

Tôi hi vọng cái này giúp được.


12

Kiểm tra infographic này: http : //www.paintcodản.com / news / iphone-6-sc Greens-emystified

Nó giải thích sự khác biệt giữa iPhone cũ, iPhone 6 và iPhone 6 Plus. Bạn có thể xem so sánh kích thước màn hình theo điểm, pixel được hiển thị và pixel vật lý. Bạn cũng sẽ tìm thấy câu trả lời cho câu hỏi của bạn ở đó:

iPhone 6 Plus - với màn hình Retina HD. Hệ số tỷ lệ là 3 và hình ảnh sau đó được thu nhỏ từ 2208 × 1242 pixel được hiển thị xuống 1920 × 1080 pixel.

Tỷ lệ thu nhỏ là 1920/258 = 1080/1242 = 20 / 23. Điều đó có nghĩa là cứ 23 pixel từ kết xuất ban đầu phải được ánh xạ tới 20 pixel vật lý. Nói cách khác, hình ảnh được thu nhỏ lại khoảng 87% kích thước ban đầu của nó.

Cập nhật:

Có một phiên bản cập nhật của infographic đã đề cập ở trên. Nó chứa thông tin chi tiết hơn về sự khác biệt độ phân giải màn hình và nó bao gồm tất cả các mẫu iPhone cho đến nay, bao gồm cả các thiết bị 4 inch.

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


Vì vậy, ngay cả khi tắt khử răng cưa, có khử răng cưa không tùy chọn diễn ra trong phạm vi thu hẹp?
Sam

Nếu Infographic bao gồm màn hình 4 inch thì nó sẽ rất tuyệt.
Rajesh

@Rajesh Tôi đã cập nhật câu trả lời của mình, kiểm tra ngay để biết thông tin về các thiết bị 4 inch.
Darrarski

4

Ngay cả khi tôi thường không thích giai điệu của blog Daring Fireball của John Gruber, thì phỏng đoán hiển thị iPhone lớn hơn của anh ấy rất đáng để đọc.

Anh ta đoán nhưng có chính xác cả độ phân giải về điểm và pixel cho cả hai model, ngoại trừ việc anh ta (tôi cũng không) mong đợi Apple xây dựng màn hình vật lý có độ phân giải nhỏ hơn và thu nhỏ lại (chi tiết trong câu trả lời của @ Tommy).

Điểm chính của tất cả là người ta nên ngừng suy nghĩ về pixel và bắt đầu suy nghĩ về điểm (điều này đã xảy ra trong một thời gian khá lâu, nó không phải là một phát minh gần đây) và dẫn đến kích thước vật lý của các yếu tố UI. Nói tóm lại, cả hai mẫu iPhone mới đều cải thiện về mặt vật lý này vì hầu hết các yếu tố vật lý vẫn giữ nguyên kích thước, bạn có thể vừa với chúng hơn trên màn hình (đối với mỗi màn hình lớn hơn bạn có thể phù hợp hơn).

Tôi hơi thất vọng vì họ đã không tiếp tục ánh xạ độ phân giải bên trong sang độ phân giải màn hình thực tế 1: 1 cho model lớn hơn.


chúng tôi nghĩ theo điểm nhưng thật không may, chúng tôi phải tạo hình ảnh bằng pixel trên Photoshop ...
Vịt

2
Điểm ảnh quan trọng đối với nhiều người trong chúng ta vì nhiều lý do. Trong khi Apple thực hiện chính sách suy nghĩ của mình về chủ đề này, họ đã thêm vào [UIScreen localBound] trong iOS8 vì những lý do rất chính đáng.
ctpenrose

Vâng, pixel cũng rất quan trọng, nhưng đối với các tài sản tĩnh như hình ảnh (màn hình giật gân và như vậy). Quan điểm của tôi (ý định chơi chữ) là thay cho bố cục của màn hình ứng dụng, mọi thứ được vẽ linh hoạt.
rawpower
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.