2012-04-09 46 views
5

Tôi vừa nhận thấy một điều thú vị trong khi cố gắng cập nhật ứng dụng cho màn hình Retina mới của iPad, mọi tọa độ trong Interface Builder vẫn dựa trên độ phân giải 1024x768 gốc.Tọa độ XCode cho màn hình iPad Retina

Điều tôi muốn nói là nếu tôi có hình ảnh 2048x1536 để nó vừa với toàn bộ màn hình trên màn hình, tôi cần đặt kích thước là 1024x768 chứ không phải 2048x1536.

Tôi chỉ tò mò là điều này có chủ ý? Tôi có thể chuyển đổi hệ tọa độ trong Interface Builder để cụ thể cho Retina không? Đó là một chút khó chịu vì một số đồ họa của tôi là không chính xác 2x ở cả hai chiều rộng hoặc chiều cao từ bản gốc của họ. Tôi dường như không thể thiết lập 1/2 số tọa độ như 1,5 nó có thể là 1 hoặc 2 bên trong Interface Builder.

Tôi có nên thiết kế giao diện của mình bằng mã tại điểm này và quên trình tạo giao diện không? Giữ đồ họa của tôi chính xác 2x theo cả hai hướng? Hoặc chỉ sống với nó?

Trả lời

4

Giao diện trên iOS dựa trên điểm, không phải pixel. Các hình ảnh phải gấp 2 lần kích thước của bản gốc.

điểm so với Pixels Trong iOS có sự phân biệt giữa các tọa độ bạn chỉ định trong mã bản vẽ của bạn và các điểm ảnh của thiết bị cơ bản. Khi sử dụng công nghệ vẽ bản địa chẳng hạn như Quartz, UIKit và Hoạt ảnh chính, bạn chỉ định giá trị tọa độ sử dụng khoảng cách tọa độ hợp lý, đo khoảng cách theo điểm. Hệ thống toạ độ logic này được tách rời khỏi tọa độ thiết bị không gian được các khung hệ thống sử dụng để quản lý pixel trên màn hình . Hệ thống tự động ánh xạ các điểm theo tọa độ lôgic không gian theo pixel trong vùng tọa độ thiết bị, nhưng ánh xạ này là không phải lúc nào cũng là một. Hành vi này dẫn đến một thực tế quan trọng là bạn nên luôn nhớ:

Một điểm không nhất thiết tương ứng với một pixel trên màn hình. Mục đích của việc sử dụng các điểm (và hệ tọa độ logic) là cung cấp kích thước đầu ra phù hợp độc lập với thiết bị. Các kích thước thực tế của một điểm là không thích hợp. Mục tiêu của các điểm là cung cấp quy mô tương đối nhất quán mà bạn có thể sử dụng trong mã của mình để chỉ định kích thước và vị trí của chế độ xem và nội dung được hiển thị. Cách các điểm thực sự được ánh xạ tới pixel là chi tiết được xử lý bởi khung hệ thống . Ví dụ: trên một thiết bị có màn hình có độ phân giải cao, một dòng có chiều rộng một điểm thực sự có thể dẫn đến một đường có hai chiều rộng là pixel trên màn hình. Kết quả là nếu bạn vẽ cùng một nội dung trên hai thiết bị tương tự, chỉ một trong số chúng có màn hình có độ phân giải cao là , nội dung có kích thước tương tự trên cả hai thiết bị.

Trong mã vẽ của riêng bạn, bạn sử dụng hầu hết thời gian, nhưng có là thời điểm bạn có thể cần phải biết các điểm được ánh xạ tới điểm ảnh như thế nào. Ví dụ: trên màn hình có độ phân giải cao, bạn có thể muốn sử dụng các pixel bổ sung để cung cấp thêm chi tiết trong nội dung của mình hoặc bạn có thể chỉ muốn điều chỉnh vị trí hoặc kích thước nội dung theo những cách tinh tế. Trong iOS 4 trở lên, các lớp UIScreen, UIView, UIImage và CALayer hiển thị yếu tố tỷ lệ cho bạn biết mối quan hệ giữa các điểm và pixel cho đối tượng cụ thể đó. Trước iOS 4, hệ số tỷ lệ này được giả định là 1.0, nhưng trong iOS 4 trở lên, có thể là 1.0 hoặc 2.0, tùy thuộc vào độ phân giải của thiết bị cơ bản. Trong tương lai, các yếu tố quy mô khác cũng có thể xảy ra.

Từ http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html

1

Đây là cố ý trên phần của Apple, để làm cho mã của bạn tương đối độc lập với độ phân giải màn hình thực tế khi định vị điều khiển và văn bản. Tuy nhiên, như bạn đã lưu ý, nó có thể làm cho đồ họa hiển thị ở độ phân giải tối đa cho thiết bị phức tạp hơn một chút.

Đối với iPhone, màn hình luôn là 480 x 320 điểm. Đối với iPad, đó là 1024 x 768. Nếu đồ họa của bạn được thu nhỏ đúng cách cho thiết bị, tác động không khó để giải quyết bằng mã. Tôi không phải là một nhà thiết kế đồ họa, và nó đã được chứng minh một chút khó khăn đối với tôi khi phải cung cấp nhiều bộ biểu tượng, hình ảnh khởi động, v.v. để giải thích cho độ phân giải cao.

tiêu chuẩn

Apple đã đặt tên cho một số loại hình ảnh đó giảm thiểu tác động đối với mã của bạn:

https://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html

Điều đó không giúp bạn khi bạn đang làm việc với inline đồ họa tùy chỉnh, tuy nhiên.

Các vấn đề liên quan