2009-08-31 42 views
12

Tôi có một tệp biểu tượng tùy chỉnh (MyApp.icns) được thiết lập cho ứng dụng Cocoa của tôi. Tôi làm cách nào để truy cập biểu tượng NSImage của biểu tượng từ trong ứng dụng của tôi?Làm cách nào để tải biểu tượng NSImage của biểu tượng cho ứng dụng của tôi?

Something như sau sẽ được hoàn hảo:

NSImage * iconImage = [MyApplication defaultIconAsImage]; 

Nhưng tôi chắc chắn rằng nó không phải là rằng dễ dàng :)

tôi có thể, tất nhiên, có được một đường dẫn đến biểu tượng tập tin như sau:

NSString * iconPath = [[NSBundle mainBundle] 
         pathForResource:@"MyApp" ofType:@"icns"]; 

Nhưng có vẻ như với tôi rằng nên có một số loại cách tiêu chuẩn để truy cập các tập tin biểu tượng cho các ứng dụng, khác hơn gọi nó bằng tên, vì tên có thể thay đổi.

Cách thích hợp để thực hiện việc này là gì?

Trả lời

36
+7

Bạn có nghiêm trọng không? Ôi trời ạ. Tôi sẽ đi đầu trong sự xấu hổ. Cảm ơn vì điều đó. –

+0

rực rỡ !!!!!!!!!!!! – SpaceDog

+1

Đặt tên NSApplicationIcon trong Bộ dựng giao diện –

15

Chỉ cần cho đầy đủ - Đây là cách bạn có được biểu tượng cho bất kỳ ứng dụng hoặc tập tin trên hệ thống của bạn.

NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:@"path"]; 

Chuyển đường dẫn đến gói ứng dụng cho biểu tượng ứng dụng hoặc đường dẫn đến tệp cho biểu tượng được liên kết với tệp.

+0

Điều đó rất hữu ích. Cảm ơn bạn –

+0

Các "và" ở trên confuses tôi trên câu của bạn về đường dẫn bởi vì tôi chỉ nhìn thấy một tham số - 'iconForFile', không phải hai. Bạn có thể giải thích điều này nhiều hơn một chút không? – Volomike

+1

@Volomike Có một chút khó hiểu. Tôi nghĩ Abizern có nghĩa là 'hoặc', không 'và' – Mark

5

Lưu ý rằng -[NSApplication applicationIconImage] không trả lại biểu tượng đúng khi biểu tượng tùy chỉnh được dán vào ứng dụng. Sau đó, bạn cần thực hiện:

NSString* appPath = [[NSBundle mainBundle] bundlePath]; 
NSImage* appIcon = [[NSWorkspace sharedWorkspace] iconForFile:appPath]; 

(Tham khảo các mã biểu tượng dock tôi đã viết cho Chromium: http://src.chromium.org/svn/trunk/src/chrome/browser/ui/cocoa/dock_icon.mm)

+0

hoàn hảo! Bạn đã cứu thịt xông khói của tôi. – SpaceDog

+0

Điều này cũng tốt nếu bạn muốn nhận được tất cả các biểu diễn có sẵn dưới dạng '[NSApp applicationIconImage]' dường như chỉ trả về 1. –

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