gpt4 book ai didi

objective-c - 使用 NSWindow 居中调整大小

转载 作者:行者123 更新时间:2023-12-03 17:41:24 25 4
gpt4 key购买 nike

我有一个 NSWindow,放置在 NSStatusItem 的位置。窗口可以使用它自己的方法 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: 。有一个委托(delegate)方法 windowDidResize:notification:,但是如果我在那里设置框架,它会被设置两次并且会滞后。

在实际调整窗口大小之前是否有正在调用的事件?如果没有,我该怎么做?

最佳答案

根据您的above comment ,您已经子类化了 NSWindow。假设您的方法 -frameForSize: 位于您的 NSWindow 子类上,请重写 -[NSWindow setFrame:display:],如下所示:

- (void)setFrame:(NSRect)frameRect display:(BOOL)flag
{
frameRect = (self.inLiveResize) ? [self frameForSize:frameRect.size] : frameRect;
[super setFrame:frameRect display:flag];
}

我已经测试过了。窗口将平滑调整大小并始终保持居中。

关于objective-c - 使用 NSWindow 居中调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13053227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com