Cocoa API解説(macOS/iOS)

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。

目次

setIcon:forFile:options:

INDEX>AppKit>NSWorkspace

フルパスで指定したファイルやフォルダにアイコンをセットします

Objective-C

- (BOOL)setIcon:(NSImage *)image
        forFile:(NSString *)fullPath
        options:(NSWorkspaceIconCreationOptions)options

Swift

func setIcon(_ image: NSImage,
     forFile fullPath: String,
     options options: NSWorkspaceIconCreationOptions) -> Bool

解説

フルパスで指定したファイルやフォルダにアイコンをセットします。

返り値

成功したかどうかYES/NO(true/false)
Objective-C

BOOL

Swift

Bool

引数

任意の画像。透明であってもなくても良い。
自動的に拡大縮小される

Objective-C

(NSImage *)image

Swift

_ image: NSImage

アイコンを変更するファイルのフルパス
ファイルやフォルダは書き込み可能でなければならない
Objective-C

(NSString *)fullPath

Swift

fullPath: String,

画像からアイコンを作る時の仕様。
オプションの値は
ConstantsのNSWorkspaceIconCreationOptions
を見てください。
Cのビット単位のRが使えます。
オプションが0ならすべてのフォーマットが有効

Objective-C

(NSWorkspaceIconCreationOptions)options

Swift

options: NSWorkspaceIconCreationOptions

フレームワーク

ApplicationKit

クラス

NSWorkspace

使用可能

10.4-

参照

更新時のバージョン

OS X 10.10.3
Swift1.2


例文

#import "SetImage.h"

@implementation SetImage

- (IBAction)set:(id)sender
{

 //開けるファイル拡張子の配列
    NSArray      *fileTypes    = [ NSArray arrayWithObject : @"TIFF" ];
    //OpenPanelを作る
    NSOpenPanel  *opPanel       = [ NSOpenPanel openPanel ];

    //OpenPanelの結果のボタン番号
    int		  opRet;

     
        //OpenPanelでファイル選択   
    opRet = [ opPanel runModalForDirectory : NSHomeDirectory() //どこのディレクトリを出すか
                                     file : @"Pictures" //どのどのファイルを選択しておくか
                                    types : fileTypes ];//選べるファイルタイプ

    if ( opRet == NSOKButton ) {  // OPENPanelのボタンがOKなら
    [image setImage:[[NSWorkspace sharedWorkspace] iconForFile:[ opPanel filename ]]];
	
	[[NSWorkspace sharedWorkspace] setIcon:[[NSWorkspace sharedWorkspace] iconForFile:[ opPanel filename ]]
									forFile:@"/Applications/Automator.app"
									options:nil
									];
    }

}

@end

Swift

    //NSWorkspace setIcon:forFile:options:
    //選択したファイルのアイコンが変更されるので注意すること
    @IBAction func function032(sender: AnyObject) {
        var aWindow : NSWindow = NSWindow(contentRect: NSMakeRect(0.0, 0.0, 300, 200), styleMask: NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask, backing: .Buffered, defer: false , screen: NSScreen.mainScreen())
        windowArray.addObject(aWindow) //ウインドウを保持するための配列に追加。アプリ終了時に配列は破棄
        
        //ファイルを選択
        var openPanel = NSOpenPanel()
        openPanel.allowsMultipleSelection = false
        openPanel.canChooseDirectories = false
        openPanel.canCreateDirectories = false
        openPanel.canChooseFiles = true
        openPanel.beginWithCompletionHandler { (result) -> Void in
            //オープンパネルでOKを選択したら
            if result == NSFileHandlingPanelOKButton {
                //選択したファイルを
                let theWorkspace : NSWorkspace = NSWorkspace.sharedWorkspace()
                let theURL : NSURL =  openPanel.URL!
                let filepath : NSString = theURL.path!
                let newImage : NSImage = NSImage(named: "IconImage")!
                
                var theView : NSImageView = NSImageView(frame: NSMakeRect(0.0, 0.0, 100.0, 100.0))
                let result : Bool  = theWorkspace.setIcon(newImage,
                    forFile: filepath as String,
                    options: NSWorkspaceIconCreationOptions.allZeros)

                aWindow.contentView.addSubview(theView)
                aWindow.center()//ウインドウをスクリーンの中心に
                aWindow.orderFront(self)//前面に
                aWindow.makeKeyAndOrderFront(self)//表示
                
                
            }//if result
        }//openPanel.beginWithCompletionHandler
        
    }