Cocoa API解説(macOS/iOS)

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

目次

initWithContentRect:styleMask:backing:defer:

INDEX>AppKit> NSWindow

ウインドウを初期化して返します

Objective-C

- (instancetype)initWithContentRect:(NSRect)contentRect
                          styleMask:(NSUInteger)windowStyle
                            backing:(NSBackingStoreType)bufferingType
                              defer:(BOOL)deferCreation

Swift

init(contentRect contentRect: NSRect,
       styleMask windowStyle: Int,
         backing bufferingType: NSBackingStoreType,
           defer deferCreation: Bool)

解説

ウインドウを初期化して返します
このメソッドは、NSWindowクラスの指定のイニシャライザです。

返り値

Objective-C

( id )

Swift

NSWindow

ウインドウオブジェクト

引数

Objective-C

( NSRect )contentRect

Swift

contentRect contentRect: NSRect

ウインドウの位置とサイズ
【contentRect】場所とサイズを指定します。

Objective-C

( unsigned int )aStyle

Swift

styleMask windowStyle: Int,

ウインドウスタイル
【styleMask】ウインドウのスタイル

● NSBorderlessWindowMask 全部なし
(それぞれを+すると両方とも)
● NSTitledWindowMask タイトルバー
f:id:jjj777:20150218071401p:plain
● NSClosableWindowMask クローズボタン
f:id:jjj777:20150218071541p:plain
● NSMiniaturizableWindowMask 最小化ボタン
f:id:jjj777:20150218071710p:plain
● NSResizableWindowMask リサイズボタン
f:id:jjj777:20150218071843p:plain

枠の無いウインドウは、ウインドウバーを表示せず、内容だけの表示となるので、ウインドウのドラッグも自分で実装しないといけません。

Objective-C

( NSBackingStoreType )backingType

Swift

backing bufferingType: NSBackingStoreType,

【backingType】
NSBackingStoreType - Cocoa API解説(iOS/OS X)
● NSBackingStoreRetained
  
● NSBackingStoreNonretained
  
● NSBackingStoreBuffered
   常にバッファリングする

Objective-C

( BOOL )flag

Swift

defer deferCreation: Bool

【flag】
YESをセットするとスクリーンにウインドウが表示されるまでウインドウを作りません。
ウインドウ内のビューも作らないので、起動時間が早くなり、メモリも使用しません。

フレームワーク

ApplicationKit

クラス

NSWindow

使用可能

10.0

参照


orderFront: - Cocoa API解説(iOS/OS X)


title - Cocoa API解説(iOS/OS X)


oneShot - Cocoa API解説(iOS/OS X)


initWithContentRect:styleMask:backing:defer:screen: - Cocoa API解説(iOS/OS X)

例文

Objective-C

#import "Controller.h"

@implementation Controller

- (IBAction)pushButton:(id)sender
{
NSWindow *wind = [[NSWindow alloc] 
                    initWithContentRect:NSMakeRect(300.0, 300.0, 500.0,500.0) 
                    styleMask:(NSTitledWindowMask | NSClosableWindowMask)
                    backing:NSBackingStoreNonretained
                    defer:NO
                    screen:nil
                    ];
[wind setFrame:[wind frame] display:YES];
[info setStringValue:[wind className]];
[wind orderFront:sender];

}
@end

Swift

var windowArray : NSMutableArray = []
    //NSWindow initWithContentRect:styleMask:backing:defer
    @IBAction func function001(sender: AnyObject) {
        var window : NSWindow = NSWindow(contentRect: NSMakeRect(0.0, 0.0, 300, 200), styleMask: NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask, backing: .Buffered, defer: false)
        windowArray.addObject(window) //ウインドウを保持するための入れるに追加。アプリ終了時に配列は破棄
        window.center()//ウインドウをスクリーンんの中心に
        window.title = "ウインドウタイトル"//タイトル設定
        window.orderFront(self)//前面に
        window.makeKeyAndOrderFront(self)//表示
        
    }