0

我有 (+) 和 (-) 按钮... (+) 按钮应该使窗口在向下方向上变长,并且 (-) 按钮应该撤消 (+) 按钮所做的事情,方法是使其从底部。

关键是,框架应该只从底部拉伸,并且大多数 UI 项目应该保持在原位 - 窗口底部的按钮应该跟随窗口高度的变化......

问题是我正在使用它来移动窗口并保持其内容的相同位置......

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];

NSRect viewFrame = mainView.frame;
viewFrame.origin.y -= 22;
viewFrame.size.height += 22;
mainView.frame = viewFrame;

但是假设您单击(+)按钮一次;当框架变长时,所有项目都会略微向上移动。如果您在第一次按下后连续单击 (+),它将按预期工作:框架将向下移动,其内容将保持原位。如果您随后单击 (-) 按钮一次;当框架缩短时,所有项目都会略微向下移动。第一次按下后连续单击(-),它将按预期移动框架。

似乎第一次按下按钮将移动所有窗口内容,而连续按下将按预期工作......我想知道我是否在 XCode 的界面编辑器中遗漏了一些关于自动调整大小的内容。谢谢你。

4

2 回答 2

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];

这工作正常。我无法获得 NSView 和窗口链接,所以我只是手动移动它们并使用 disableFlushWindow 使其同时无缝发生。

于 2012-10-05T04:01:50.987 回答
0

假设这mainView是您窗口中的主视图,您不应该手动修改它的框架。只要您正确配置了弹簧和支柱(或约束),它就应该随窗口自动调整大小。

于 2012-10-03T22:25:24.073 回答