NSStatusItem の位置に配置された NSWindow があります。ウィンドウは、独自のメソッドを使用してサイズを変更できますsetSize:
。これは、次のようにウィンドウに適したフレームを取得するだけです。
- (NSRect)frameForSize:(NSSize)size {
NSRect newFrame = self.frame;
newFrame.origin.x += (newFrame.size.width - size.width) / 2;
newFrame.origin.y += (newFrame.size.height - size.height);
newFrame.size = size;
return newFrame;
}
これにより、幅が変更された場合でも、ウィンドウを中央に配置できます。これはコードを使用して簡単に呼び出すことができますが、ユーザーがウィンドウの端を使用してサイズを変更すると、setFrame:display: が直接呼び出されます。デリゲート メソッドがありますが、windowDidResize:notification:
そこにフレームを設定すると、2 回設定されて遅れます。
ウィンドウが実際にサイズ変更される前に呼び出されるイベントはありますか? そうでない場合、どうすればよいですか?