2009-09-04 11 views
12

Korzystanie z Objective-C i kakao, czy ktoś wie, jak uzyskać ikonę komputera użytkownika (ten, który pokazuje w "Urządzenia" i "Sieć" w Finderze)? Nie ikona dysku twardego, właściwa dla urządzenia użytkownika. Różni się od ikony MacBook do ikony Mac Pro, po niebieski ekran ikony monitora śmierci.Jak uzyskać ikonę komputera Mac?

Próbowałem rzeczy wzdłuż następujących linii:

NSImage *icon = [[NSWorkspace sharedWorkspace] 
        iconForFileType: NSFileTypeForHFSTypeCode(kComputerIcon)]; 

Ale to właśnie zwraca tę samą ikonę cały czas, oczywiście. Próbowałem również metody iconForFile:, ale nie wiem o ścieżce pliku do użycia jako parametr. Czy ktoś może wskazać mi właściwy kierunek?

+3

+1 za przynajmniej samodzielne wypróbowanie. – Abizern

Odpowiedz

27
[NSImage imageNamed: NSImageNameComputer] 

ten powróci ikonę prąd komputerowego

+3

genialny! Czy istnieje lista innych ciągów lub stałych dla "nazwanych" obrazów? –

+1

Pełną listę nazwanych obrazów można znaleźć w dokumentacji NSImage. Ponadto, dla zapisu, powinieneś raczej używać stałego NSImageNameComputer zamiast literalnego @ "NSComputer", ponieważ stała to ta, która jest faktycznie odsłonięta jako publiczny API. –

+2

zmieniono literał na stałą. Tutaj lista wszystkich stałych http://tinyurl.com/m5qcl5 – cocoafan

5

Jeśli szukasz innych ikon systemowych sprawdzeniu przykładowy projekt firmy Apple o nazwie „IconCollection”. http://developer.apple.com/mac/library/samplecode/IconCollection/listing5.html

Próbka jest dostarczana z plikiem plist, który ma nazwy i kody dla kilku ikon systemu, do których można uzyskać dostęp za pomocą;

OSType code = UTGetOSTypeFromString((CFStringRef)codeStr); 
NSImage *picture = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(code)]; 

gdzie codeStr jest kod ciąg ikony przewidzianego w icons.plist

+1

Teraz na https://developer.apple.com/library/mac/#samplecode/IconCollection/Introduction/Intro.html –

7

Innym miejscem do szukania ikon:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources 

Można tworzyć NSImage obiekty z plikami tam jak to:

[[NSImage alloc] initWithContentsOfFile:@"/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/com.apple.macbook-unibody.icns"]; 

Prawdopodobnie nie zaleca się sztywnego kodowania wartości li ke jednak, ponieważ Apple może zmienić lokalizacje ikon. Jest to plik o nazwie IconsCore.h że zawiera wiele innych wartości stałych, takich jak „kToolbarDesktopFolderIcon”, które mogą być wykorzystywane jako:

[[NSWorkspace sharedWorkspace] iconForFileType: NSFileTypeForHFSTypeCode(kToolbarDesktopFolderIcon)]; 

wierzę stałe te działają tylko w systemie Snow Leopard, choć.