gpt4 book ai didi

macos - MAC Cocoa - 以编程方式设置窗口大小

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

我有一个单窗口应用程序,屏幕上有一些复选框。

我使用 NSUserDefaults 不仅存储复选框的状态,还存储主窗口的宽度、高度和位置 (x/y)。

我的问题是找到正确的事件来读取和设置窗口属性。

目前我在:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// read preferences
UserPreferences *userPrefs = [[UserPreferences alloc] init];
NSRect oldFrame = [window frame];
if( [userPrefs MainWindowWidth] > 0)
oldFrame.size.width = [userPrefs MainWindowWidth];

if( [userPrefs MainWindowHeight] > 0)
oldFrame.size.height = [userPrefs MainWindowHeight];

if( [userPrefs MainWindowTop] > 0)
oldFrame.origin.y = [userPrefs MainWindowTop];

if( [userPrefs MainWindowLeft] > 0)
oldFrame.origin.x = [userPrefs MainWindowLeft];

// set windows properties
[window setFrame:oldFrame display:YES animate:NO];
}

它可以工作,但屏幕首先显示默认尺寸,然后更改为存储的尺寸,因此在视觉上出现了问题。这告诉我,在事件链中设置这些参数已经太晚了。

我也尝试过 awakefromnib,但这在链中似乎为时过早,因为设置宽度和高度被简单地忽略。

哪个事件最适合插入此代码以在窗口显示在屏幕上之前重置窗口?

如有任何建议,我们将不胜感激。每一个开始都是艰难的。

谢谢。

最佳答案

这是因为窗口的框架首先从 nib 加载,然后显示窗口(一旦从 nib 加载完成)。

您可以在界面生成器中禁用“启动时显示窗口”复选框,并在 applicationDidFinishLaunching 中手动显示它。

关于macos - MAC Cocoa - 以编程方式设置窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27740376/

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