Swift

Swift:標準アイコン16×16の取得

昨夜取り出した標準アイコンのサイズはやはり32×32でした。

16×16のサイズに直さなければならないのですが、やり方がさっぱりわかりません。iOSはこうすればリサイズできるというサンプルがあちこちにあります。しかし、OS Xはさっぱりです。

あっ・・・、リサイズと言うのですね。なるほど。

泣きながら、調べ続けました。iOSのコードを参考にしてあれこれ試したが、どれもこれも全然OS Xに該当するものがなく全滅。最後にNSImage をリサイズするに行きあたり、これで解決できました。実際は、このブログの中にある「期待どおりに使えなかったリサイズ方法」を使いました。感謝いたします。

コードは次の通りです。

func ExecGetIcon16x16(pPath:String) -> NSImage {  //<*アイコンを16×16のNSImageでgetする*>
let wIcon32:NSImage   = NSWorkspace().iconForFile(pPath)//アイコンイメージをgetする。
let wSize = CGSize(width:16.0, height:16.0)
let wIcon16 = NSImage(size: wSize)
let wRect = NSRect(x: 0.0, y: 0.0, width: wSize.width, height: wSize.height)
if let imageRep = wIcon32.bestRepresentationForRect(wRect, context:nil, hints:nil) {//lockFocusは通常スクリーンで 72dpi/Retina スクリーンで 144dpi。
wIcon16.lockFocus()
imageRep.drawInRect(wRect)
wIcon16.unlockFocus()
 }
return wIcon16  //== return == 16×16アイコン
}

Screenshot 2016-01-26 18.49.17

なお、こんなサイトがGitHubにありました。iOSとOS Xで使い分けているところで参考になるものがあるかもしれません。

女房が高熱で病院に行ったら、インフルエンザと判明しました。私も一昨日博多に行ってから何となく風邪気味で不調です。インフルエンザだと嫌だな。

Categories: Swift, 技術