2011-08-10 21 views
5

Tôi có một ứng dụng, nơi hầu hết các tài nguyên hình ảnh được lưu trữ trong gói tài nguyên riêng biệt (có lý do hợp lệ để thực hiện điều đó). Gói tài nguyên này được thêm vào dự án cùng với gói ứng dụng chính và trong khi tôi thiết kế NIB của tôi trong Interface Builder, tất cả những hình ảnh đó đều có thể nhìn thấy bên trong IB (nghĩa là chúng xuất hiện trong danh sách thả xuống cho UIImageView của tôi và chúng được hiển thị đúng trong giao diện người dùng của tôi). Tuy nhiên khi tôi chạy ứng dụng của tôi trong trình mô phỏng tất cả những hình ảnh đó bị thiếu. Có cách nào để yêu cầu UIKit tìm kiếm những hình ảnh đó trong gói tài nguyên bổ sung này ngoài gói ứng dụng chính không?Tài nguyên nằm trong một gói riêng hiển thị trong IB, nhưng không phải trong thời gian chạy

Tôi có thể tải những hình ảnh đó theo cách thủ công trong viewDidLoad, nhưng tôi đang tìm cách sử dụng Interface Builder để dễ dàng thay đổi thiết kế/da của những NIB đó.

Cập nhật: Mặc dù tệp hình ảnh từ gói đó có sẵn ngay trong danh sách thả trong IB, chúng sẽ không tải trong thời gian chạy. Tuy nhiên nếu tôi tiền tố tên của họ với một tên bó trong IB như thế này:

Sceenshot

Sau đó, họ sẽ được tải đúng trong thời gian chạy, nhưng IB sẽ hiển thị chúng dấu hỏi màu xanh lớn.

Bây giờ câu hỏi đặt ra là làm thế nào để có tốt nhất của cả hai thế giới và có hình ảnh hiển thị đúng cả trong IB (thiết kế thời gian) và thời gian chạy.

+0

Khi bạn nói nhóm, bạn thực sự có nghĩa là '.bundle'? Bạn đã thêm điều này vào dự án Xcode của mình như thế nào? Chúng ta có thể thấy ảnh chụp màn hình của trình điều hướng dự án không? – jtbandes

+0

Vâng, đó là một .bundle thực tế. Bạn có thể thêm nó vào dự án của bạn giống như bất kỳ tệp nào khác và IB tự động chọn nội dung của nó. Dưới đây là ảnh chụp nhanh của trình điều hướng dự án [Project Navigator] (https://img.skitch.com/20110810-jeyxrq8m35w939a41yjn1amwg8.jpg) –

+0

Những người này đã có nó để làm việc http://stackoverflow.com/questions/7733565/ ios-how-to-use-hình ảnh-in-custom-bundle-in-giao diện-xây dựng, tôi không thể làm cho nó hoạt động với ios6 sdk của tôi –

Trả lời

3

Tôi đã gặp sự cố tương tự và có khả năng là do cách Xcode biên dịch hình ảnh của bạn khi lắp ráp mục tiêu gói của bạn. Vì mục tiêu gói không được hỗ trợ đầy đủ trên iOS, bạn phải tạo chúng dưới dạng mục tiêu Mac OS X. Đó là một cài đặt xây dựng có vấn đề tại chỗ, cụ thể là COMBINE_HIDPI_ARTWORK, sẽ được đặt thành YES. Điều này dẫn đến các biến thể bình thường và @2x được kết hợp thành một tệp tiff duy nhất trong gói của bạn. Tệp kết quả được hỗ trợ trên Mac OS nhưng không được hỗ trợ trên iOS.

(Cảm ơn this answer để biết mẹo).

Để khắc phục điều này, hãy chọn dự án tạo gói của bạn trong Trình điều hướng tệp, chọn mục tiêu nhóm của bạn, chuyển sang tab Cài đặt xây dựng và tìm kiếm cài đặt nói trên. Sau đó, chọn toàn bộ hàng và nhấn Xóa hoặc chỉ cần đặt thành NO.

Tại thời điểm đó, bạn sẽ có thể sử dụng hình ảnh của bạn trong cả IB và mã mà không làm bất cứ điều gì đặc biệt (ngoài việc đảm bảo hình ảnh và hình ảnh nằm trong cùng một gói).

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