2016-05-26 5 views
1

Ich habe Probleme beim Erstellen einer NSCollectionView mit Symbolen, die aus der Symbolvorschau des Finders stammen.NSCollectionView-Raster von Dateien, die mit Symbolen aus der Vorschau des Finders angezeigt werden

Im Idealfall, wenn die Datei ein DMG ist, sollte das Festplattensymbol angezeigt werden, ein MP3 sollte das MP3-Symbol sein und ein Foto sollte zeigen, wie das Foto selbst aussieht.

Es ist ein Beitrag, der dieses Problem behebt: Is it possible to get programmatic access to finder preview images?

Aber der Code ist alt und nicht kompiliert. Ich benutze Swift auch in diesem Projekt.

verwendet ich diesen Beitrag zur Einrichtung einer Vorlage für mein Projekt: Is there a way to set up a NSCollectionView programmatically in Swift?

, die eine Subview NSView hinzufügt. Wenn dies geändert werden kann, um die Symbole zu implementieren, wäre das ideal.

Außerdem verwende ich einen NSFileManager.defaultManager, um den Inhalt eines Ordners abzurufen, und möchte diesen Inhalt in der Sammlungsansicht anzeigen.

Ich bin neu auf der Mac-Plattform zu entwickeln und habe mehr Erfahrung mit iOS, spezifische Antworten werden sehr geschätzt, danke!

Antwort

0

Update, konnte ich herausfinden, wie Sie verwenden, was Finder mit der Quicklook-Bibliothek verwendet, die Apple bietet. Hier ist ein Teil des Codes, den ich verwendet habe. Beachten Sie, wenn Sie versuchen, Quick auf eine Datei zu verwenden, die keine Vorschau hat, dann wird es ein Fehler sein, so dass in diesen Fällen ich die iconForFile Funktion nur verwendet (unter diesem Codeblock)

let tmp = QLThumbnailImageCreate(kCFAllocatorDefault, tmpURL , CGSize(width: 64, height: 64), nil) 
tmpImage = tmp.takeUnretainedValue() 
tmpIcon = NSImage(CGImage: tmpImage!, size: NSSize(width: 64, height: 64)) 

Ursprüngliche :

Ich konnte (fast) finden, was ich suchte.

In der NSWorkspace Klasse gibt es ein Verfahren

func iconForFile(_ fullPath: String) -> NSImage 

dass ein NSImage des Symbols angezeigt werden kann. Leider sehe ich keine Möglichkeit, eine Vorschau des Bildes zu erhalten, wenn es sich um ein Bild handelt. Ich sehe auch keinen Weg, das Bild größer zu machen (nur 32x32 Pixel).

Hoffentlich hilft diese Antwort anderen, die auf dieses Problem stoßen!