我有(+)和( - )按钮......(+)按钮应该使窗口向下延长,而( - )按钮应该撤消(+)按钮的作用,通过制作它从底部较短。
关键是,框架应该只从底部伸展,大多数UI项目应该保持原位 - 窗口底部有按钮,应该跟随窗口高度的变化... < / p>
问题是我正在使用它来移动窗口并维持其内容的相同位置......
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的界面编辑器中遗漏了一些关于自动调整的内容。谢谢。
答案 0 :(得分:0)
假设mainView
是窗口中的主视图,则不应手动修改其框架。只要你正确配置了弹簧和支柱(或约束),它就应该随窗口自动调整大小。
答案 1 :(得分: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使它同时无缝地发生。