macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

constrainFrameRect:toScreen:

INDEX>AppKit> NSWindow

ウインドウの位置を調整するメソッド

Objective-C

- (NSRect)constrainFrameRect:(NSRect)frameRect
                    toScreen:(NSScreen *)screen

Swift

func constrainFrameRect(_ frameRect: NSRect,
               toScreen screen: NSScreen?) -> NSRect

解説

このメソッドを呼び出す必要はありません。
自動的に調整するのを防ぐためにサブクラスでオーバーライドすることができます。

サンプル
サブクラスでオーバーライドすることで、ウインドウを移動しても指定の大きさで指定の場所に戻ってしまう。
f:id:jjj777:20150318232612g:plain

返り値

調整後のウインドウの位置と大きさ
Objective-C

( NSRect )

Swift


引数

フレーム範囲
Objective-C

( NSRect )frameRect

Swift

スクリーン
Objective-C

( NSScreen * )aScreen

Swift


フレームワーク

ApplicationKit

クラス

NSWindow

使用可能

10.0

参照

関連記事(外部サイト)

更新時バージョン

10.10

例文

Objective-C

#import "MyWindow.h"

@implementation MyWindow
//ウインドウのデリゲート
-(NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)aScreen
{
NSLog(@"constrainFrameRect");
return NSMakeRect(0,650,100,100);
}
@end

Swift
サブクラスでオーバーライドして、自動調整を妨害する

import Cocoa

class MyWindow: NSWindow {
    override func constrainFrameRect(frameRect: NSRect, toScreen screen: NSScreen?) -> NSRect {
        NSLog("constrainFrameRect call")
        return NSMakeRect(100.0, 100.0, 300.0, 200.0)
    }
}