World作成の続きです。今回は、ウインドウの最小サイズと最大サイズを設定します。ウインドウをスクリーンの中央に配置する処理を、HelloWindowContorllerクラスに追加します。この記事では前回作成したサンプルコードを使用します。前回作成したサンプルコードは次の記事からダウンロードできます。World作成の続きです。Worldで表示されるウインドウのウインドウコントローラを変更...目次ウインドウの最小サイズ・最大サイズの設定ウインドウの最小サイズ・最大サイズはコード設定する方法と、Storyboardファイル内で設定する方法があります。この記事ではコードで設定する方法を解説します。どちらの方法でも構わないのですが、次のような理由でコード定義にしました。値を決定するときに試行錯誤が簡単。将来のバージョンなどで値を変更していったときに変更履歴を追うのが容易になる。最小値・最大値を設定するコードを追加するStoryboardファイルからウインドウを読み込むと、AppKitはNSWindowController.windowDidLoad()メソッドを実行します。windowDidLoad()メソッドはウインドウの初期化処理を行うためのデリゲートメソッドです。このメソッド内で最小値・最大値を設定します。次のようにコードを追加します。}}次のスクリーンキャプチャは最小サイズにしているときのスクリーンキャプチャです。最小サイズのときのウインドウウインドウの取得AppKitのウインドウはNSWindowController.windowプロパティに入っています。NSWindow?最小サイズウインドウの最小サイズはNSWindow.minSizeプロパティに設定します。NSSize最大サイズウインドウの最大サイズはNSWindow.maxSizeプロパティに設定します。NSSizeカーソルの制御サイズ変更可能なウインドウの場合、ウインドウの角やフレームなどにカーソルを持って行くと、カーソルが自動的にリサイズ可能なことを示すように変化します。AppKitでは何もしなくても、macOSの標準的なカーソル制御を行ってくれます。次のスクリーンキャプチャはウインドウサイズを広げることも縮めることもできる状態のときです。最小サイズのときは、これ以上縮小できないことを示すカーソルになります。最大サイズのときは、これ以上を広げることができないことを示すカーソルになります。縮小のみ可能ウインドウを中央に配置するウインドウを中央に配置する処理を追加します。単純に考えると、スクリーンサイズとウインドウサイズを元に、中央に配置する座標を計算するという処理になります。NSWindowクラスにはウインドウを中央に移動するメソッドがあるので、計算しなくても、用意されているメソッドを使うだけで中央に配置できます。次のようにコードを変更します。}}追加したコードは次の部分です。window?.makeKeyAndOrderFront(nil)window?.center()ウインドウリストとキーウインドウについてmacOSではスクリーンに表示されているウインドウを管理しているウインドウリストがあります。windowDidLoad()メソッドが実行されている時点では、ウインドウリストにウインドウが入っていないので、スクリーンにはウインドウは表示されません。この状態でcenter()メソッドを使っても、どのスクリーンに対して中央なのかが決まらないので、center()メソッドが動きません。そこで、NSWindow.makeKeyAndOrderFront()メソッドを使用します。makeKeyAndOrderFront()メソッドは次のような処理を行います。先頭のスクリーンにウインドウを移動する。ウインドウをキーウインドウに変更するウインドウを表示するキーウインドウとは?スクリーンには複数のアプリが同時に起動し、各アプリは複数のウインドウを持っています。キーボードからキー入力を行うと、最前面にあるウインドウがキーダウンイベントを受け取り、キー入力を処理します。このウインドウのことを「キーウインドウ」と呼びます。微妙に中央ではない?center()メソッドで配置されたウインドウが微妙に中央ではないことに気がつきましたか?水平方向は中央揃えになっていますが、若干、上方向にずれて表示されます。これは、不具合ではありません。人間の視覚は、完全な中央よりも若干上にずれた位置の方が見やすく、気がつきやすいため、このような仕様になっています。サンプルコードのダウンロード今回の記事で作成したサンプルコードはこちらからダウンロードできます。ARKitARKitはiPhoneやiPadを使ったAR(拡張現実)アプリを作るためのフレームワークです。基礎から学ぶMetal「基礎から学ぶMetal」を執筆しました。本書はMetalを使ってGPUプログラミングを行うための最初のステップを解説するMetalの解説書です。SwiftUI」というタイトルの本を執筆しました。10.15などから使用可能になったSwiftUIの入門書です。公式ページへのリンクを追加しました。v2.1への対応方法へのリンクを追加しました。プログラミングの世界」という本を執筆しました。Objective-C逆引きハンドブック」を執筆しました。発刊)という本を執筆しました。Engineer(ソフトウェアエンジニア)アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ARKitARKitはiPhoneやiPadを使ったAR(拡張現実)アプリを作るためのフレームワークです。基礎から学ぶMetal「基礎から学ぶMetal」を執筆しました。本書はMetalを使ってGPUプログラミングを行うための最初のステップを解説するMetalの解説書です。SwiftUI」というタイトルの本を執筆しました。10.15などから使用可能になったSwiftUIの入門書です。公式ページへのリンクを追加しました。v2.1への対応方法へのリンクを追加しました。プログラミングの世界」という本を執筆しました。Objective-C逆引きハンドブック」を執筆しました。発刊)という本を執筆しました。