2011-08-06 18 views
1

如何根據文件創建者代碼/類型代碼顯示自定義圖標。例如,我有一個應用程序以創建者代碼'TSTx'打開文件,我將如何設置該創建者代碼的圖標?在OSX上顯示創建者代碼的圖標

我猜這就是像Cyber​​duck這樣的應用程序顯示一個進度圖標,當一個文件正在被下載而沒有改變文件擴展名,這就是我想要複製的行爲。

感謝, Ĵ

回答

3

你不應該依賴於這個創造者和類型代碼。並非所有文件都分配了它們。事實上,即使所有的應用程序都沒有獨特的創建者代碼,所以這個保證會被破壞。

如果他們的文件確實存在於文件系統中並且具有正確的路徑擴展名,則-[NSWorkspace iconForFile:]應該有效。 (我認爲這也適用於自定義圖標。)如果文件不存在於文件系統中(例如,因爲它存儲在數據庫中),則-[NSWorkspace iconForFileType:]即可。您可以提供路徑擴展名,或者如果您堅持使用HFS類型代碼(必須用the NSFileTypeForHFSTypeCode function包裝成一個字符串)。

要設置Finder使用的自定義圖標,您不需要類型和創建者代碼。使用-[NSWorkspace setIcon:forFile:options:]

+0

感謝您的回覆,但在這種情況下,我可以保證創建者代碼和類型代碼存在。我只需要根據代碼在Finder中顯示一個圖標。擴展程序不是有效的選項,因爲我試圖重現Cyber​​duck的行爲,其中文件擴展名保持不變,但圖標被臨時更改。 – JWood

+0

我很困惑 - 你想在你的應用中顯示圖標,還是在Finder中設置自定義圖標?要設置Finder使用的自定義圖標,您不需要類型和創建者代碼。使用' - [NSWorkspace setIcon:forFile:options:]'。 (我編輯了我的答案,包括此選項。) – gcbrueckmann

+0

我想在查找器中設置圖標,但是'NSWorkspace setIcon:forFile:options'不是一個選項,因爲它需要文件是可寫的(我猜測它更新資源分叉?)。文件系統是隻讀的,但其中一些文件將包含特定的HFS類型代碼。我只想將它與一個靜態圖標聯繫起來,以防止Finder讀取的文件數據創建一個圖標。 – JWood

相關問題