0

看来,当我在 mac 应用程序中发送一个窗口时:

    NSRect frame = sender.window.frame;
NSLog(@"\nHeight and width of window frame: (%f,%f).\nThe x and y origin of the window frame: (%f,%f). ", frame.size.height, frame.size.width, frame.origin.x, frame.origin.y);
frame.origin.y -= 22;
frame.size.height += 22;
[sender.window setFrame:frame display:YES animate:NO];

尽管它看起来延伸得更长,但没有一个 UI 元素(按钮)识别窗口有更多空间。他们无法进入开辟的新空间。

我有几个按钮应该留在窗口的按钮上,我将以下内容与上面的代码结合使用以将它们保持在一起:

CGRect quitBF = quitButton.frame;
quitBF.origin.y -= 5; // new y coordinate
quitButton.frame = quitBF;
CGRect loadBF = loadButton.frame;
loadBF.origin.y -= 5; // new y coordinate
loadButton.frame = loadBF;
CGRect saveBF = saveButton.frame;
saveBF.origin.y -= 5; // new y coordinate
saveButton.frame = saveBF;
CGRect resetBF = resetButton.frame;
resetBF.origin.y -= 5; // new y coordinate
resetButton.frame = resetBF;

然而,当它们到达窗口的旧尺寸时,它们开始消失。就连窗口也显得更长了。谢谢你。

编辑:查看了窗口本身的自动调整大小。意识到问题与窗口内的 NSView 有关。该视图包含所有 UI 元素,并且它似乎在窗口更改时不会更改。现在唯一的问题是,我不知道如何从底部而不是从顶部扩展视图。(增加顶部和移动原点不起作用,因为所有 UI 元素都随 NSView 移动)。

4

2 回答 2

1

问题可能是您如何设置自动调整大小。如果您仅激活顶部支柱,它应该按照您的意愿运行

于 2012-04-06T05:20:07.740 回答
0

按钮正在消失,因为视图的原点没有跟上窗口的移动。以下让它无缝地移动窗口并一起查看......因为我没有正确设置链接,但它可以正常工作:

    [mainWindow disableScreenUpdatesUntilFlush];
[mainWindow disableFlushWindow];

NSRect frame = sender.window.frame;
NSRect viewFrame = mainView.frame;

viewFrame.size.height += 25;
frame.size.height += 25;
frame.origin.y -= 25;

[sender.window setFrame:frame display:YES animate:NO];
mainView.frame = viewFrame;

[mainWindow enableFlushWindow];
于 2012-10-05T03:56:59.260 回答