2012-02-21 34 views
7

Vì vậy, một số iPad trong tương lai có thể sẽ có Màn hình Retina. Và Apple rất có thể sẽ truy cập vào stick to the @2x paradigm. Tôi đã mong đợi điều này một thời gian và vì vậy tôi đã có @ 2x tác phẩm nghệ thuật cho iPad trong các ứng dụng của tôi; một số đã có trong cửa hàng ứng dụng.iPad 3 Màn hình Retina, @ 2x hình ảnh và ứng dụng đã có trong cửa hàng

Câu hỏi của tôi là: Tôi có cần biên dịch lại và/hoặc gửi lại ứng dụng để sử dụng tác phẩm nghệ thuật đã nói khi iPad huyền thoại này được phát hành để tận dụng những tệp này không? Hoặc là cái gì đó nướng vào hệ điều hành chính nó và nó chỉ nên tự động sử dụng chúng?

(Kể từ khi điều tương tự xảy ra trước đây, những gì đã xảy ra w/ứng dụng được lưu hành theo pre-iPhone-4 SDK đã xảy ra để có tác phẩm nghệ thuật phải không? Có phải họ chỉ làm việc?)

+1

Tôi không nghĩ rằng bất kỳ ứng dụng nào trước iPhone-4 chỉ xảy ra để có tác phẩm nghệ thuật phù hợp .... – Thilo

+0

Chắc chắn, có ai biết chắc chắn nếu điều này là chính xác không? –

Trả lời

6

tôi đã thử nghiệm với một võng mạc iPad ngày hôm nay, và đây là những gì có thể xảy ra:

  • Nếu một ứng dụng được biên soạn với Xcode gần đây một cách hợp lý (có thể là 4.2 trở lên), @ hình ảnh 2x được sử dụng, giống như khi iPhone 4 xuất hiện.
  • Nếu ứng dụng được biên dịch bằng Xcode 3, thì hình ảnh @ 2x là không sử dụng, ngay cả khi có mặt. (ví dụ: trong ứng dụng lai có khả năng tương thích với iPhone. 4)

(Chúng tôi có một số dự án dựa trên XCode-3, nhiều dự án được kết hợp với iPhone võng mạc. Khi tôi biên dịch một dự án thử nghiệm ở cả Xcode 3 và Xcode 4, bản dựng 4 sử dụng tài nguyên võng mạc và 3 bản dựng không thành công. Các thí nghiệm khác cho thấy sự khác biệt được biên dịch vào bản thân nó, vì vậy nó không chỉ là tinh chỉnh info.plist như tôi đã hy vọng.)

[eta .: giả thuyết của tôi là biên dịch với một liên kết SDK trước đó bạn chống lại một phiên bản UIKit khác khi chạy. Sự khác biệt lạ trong hành vi khi tôi cập nhật mã của chúng tôi dường như đã làm điều này xảy ra. Nếu bất kỳ ai biết câu thần chú để biết chắc chắn, vui lòng nhận xét.]

[đã chỉnh sửa để thêm, một lần nữa: có một số khác biệt về nib. Một dự án cũ được mở trong xcode 4 sẽ không sử dụng đồ họa @ 2x cho đến khi tôi lưu lại MainWindow.nib của mình; sau đó nó đã làm trong suốt, không có thay đổi nào khác. . Tôi nghi ngờ một tài sản tiềm ẩn của đối tượng UIWindow]

+0

Không phải đây là tin tốt, nhưng tôi có cùng trải nghiệm, ít nhất là một phần về hình ảnh 2x @ không được sử dụng khi biên dịch bằng Xcode3. Tôi chưa thử Xcode 4. Cảm ơn bạn đã đăng bài, ít nhất tôi biết tôi không điên. – hyperspasm

+0

Ồ, đó là câu trả lời chi tiết. Cảm ơn! – DOOManiac

1

Tôi giả định này sẽ chỉ làm việc trên thiết bị. Đó là sự hiểu biết của tôi rằng [UIImage imageNamed:] tìm kiếm @ 2x nếu thiết bị hỗ trợ nó. Vì vậy, có vẻ như nó được tích hợp vào iOS. Đây hoàn toàn chỉ là một phỏng đoán.

2

Những gì tôi đã tìm thấy khi xây dựng với XCode 4.2 (iOS SDK 5.0) chạy trên Snow Leopard là như sau:

Images nạp lập trình sử dụng [UIImage imagedNamed: ] trong mã của bạn sẽ tải đúng hình ảnh võng mạc @ 2x trên iPad võng mạc.

Hình ảnh được chỉ định trên các nút và chế độ xem trong tệp XIB của Trình tạo giao diện thường KHÔNG tải đúng hình ảnh võng mạc @ 2x.

Cách khắc phục mà tôi phát hiện là buộc UIImage lưu trữ từng hình ảnh được tham chiếu trong XIB của bạn bằng cách sử dụng các cuộc gọi [UIImage imagedNamed:] trong nhóm initWithNibName: (NSString *) của bộ điều khiển xem: (NSBundle *) . Phương thức có lập trình thực hiện một tải @ 2x tốt và hệ thống lưu trữ nó, mà cơ chế tải XIB kết thúc tham chiếu, cho ra hình ảnh võng mạc. Ví dụ:

// The designated initializer. Override to perform setup that is required before the view is loaded. 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     // Doing this to precache proper retina versions, because older xcode nibs aren't loading them correctly on retina iPads with XCode 4.2 builds 

     [UIImage imageNamed:@"my_button.png"]; 
     [UIImage imageNamed:@"my_other_button.png"]; 
    } 
    return self; 
} 

Tôi giả định rằng tòa nhà có XCode 4.3 (SDK 5.1) hoạt động chính xác với XIB, nhưng tôi chưa chuẩn bị nâng cấp lên Lion chỉ để sử dụng phiên bản XCode đó.

+0

Cảm ơn bạn! Tôi có kinh nghiệm như sau: Nếu bạn không chỉ định tên hình ảnh như thế này "[email protected]", và Xcode tìm kiếm cho tập tin @ 2x chính nó, nó sẽ tìm thấy các tập tin, nhưng nó sẽ không hiển thị nó một cách chính xác. Nó sẽ không được kích thước như mong đợi. Tuy nhiên nếu bạn tải hình ảnh của bạn như thế này "[email protected]", nó được hiển thị một cách chính xác. Tôi nên gửi báo cáo lỗi, nhưng hiện tại tôi đã quá kiệt sức sau tất cả thử nghiệm này. – tmighty

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