如何根據文件創建者代碼/類型代碼顯示自定義圖標。例如,我有一個應用程序以創建者代碼'TSTx'打開文件,我將如何設置該創建者代碼的圖標?在OSX上顯示創建者代碼的圖標
我猜這就是像Cyberduck這樣的應用程序顯示一個進度圖標,當一個文件正在被下載而沒有改變文件擴展名,這就是我想要複製的行爲。
感謝, Ĵ
如何根據文件創建者代碼/類型代碼顯示自定義圖標。例如,我有一個應用程序以創建者代碼'TSTx'打開文件,我將如何設置該創建者代碼的圖標?在OSX上顯示創建者代碼的圖標
我猜這就是像Cyberduck這樣的應用程序顯示一個進度圖標,當一個文件正在被下載而沒有改變文件擴展名,這就是我想要複製的行爲。
感謝, Ĵ
你不應該依賴於這個創造者和類型代碼。並非所有文件都分配了它們。事實上,即使所有的應用程序都沒有獨特的創建者代碼,所以這個保證會被破壞。
如果他們的文件確實存在於文件系統中並且具有正確的路徑擴展名,則-[NSWorkspace iconForFile:]
應該有效。 (我認爲這也適用於自定義圖標。)如果文件不存在於文件系統中(例如,因爲它存儲在數據庫中),則-[NSWorkspace iconForFileType:]
即可。您可以提供路徑擴展名,或者如果您堅持使用HFS類型代碼(必須用the NSFileTypeForHFSTypeCode
function包裝成一個字符串)。
要設置Finder使用的自定義圖標,您不需要類型和創建者代碼。使用-[NSWorkspace setIcon:forFile:options:]
。
感謝您的回覆,但在這種情況下,我可以保證創建者代碼和類型代碼存在。我只需要根據代碼在Finder中顯示一個圖標。擴展程序不是有效的選項,因爲我試圖重現Cyberduck的行爲,其中文件擴展名保持不變,但圖標被臨時更改。 – JWood
我很困惑 - 你想在你的應用中顯示圖標,還是在Finder中設置自定義圖標?要設置Finder使用的自定義圖標,您不需要類型和創建者代碼。使用' - [NSWorkspace setIcon:forFile:options:]'。 (我編輯了我的答案,包括此選項。) – gcbrueckmann
我想在查找器中設置圖標,但是'NSWorkspace setIcon:forFile:options'不是一個選項,因爲它需要文件是可寫的(我猜測它更新資源分叉?)。文件系統是隻讀的,但其中一些文件將包含特定的HFS類型代碼。我只想將它與一個靜態圖標聯繫起來,以防止Finder讀取的文件數據創建一個圖標。 – JWood