在许多OSX应用程序中,我经常看到首选项窗口框架根据工具栏按钮激活的视图内容而增长和减少。
我想知道是否有办法自动化帧大小维度,或者唯一的方法是以编程方式调整大小和动画。
答案 0 :(得分:7)
我认为你只能使用NSWindow的setFrame:display:animate:我不认为窗口可以自动调整大小。因此,当您更改内容时,您可以执行以下操作:
NSRect oldContentFrame = [oldContentView frame];
NSRect newContentFrame = [newContentView frame];
float widthDifference = oldContentFrame.size.width - newContentFrame.size.width;
float heightDifference = oldContentFrame.size.height - newContentFrame.size.height;
// Change the size of the window by the difference between the two views
// and move the frame up/down
NSRect windowFrame = [window frame];
windowFrame.size.width -= widthDifference;
windowFrame.size.height -= heightDifference;
windowFrame.origin.y += heightDifference;
// Remove the old content
[oldContentView removeFromSuperview];
// Change the size
[window setFrame:windowFrame display:YES animate:YES];
// Add the new view
[window setContentView:newContentView];
答案 1 :(得分:0)
看看Dave Batton的DBPrefsWindowController
。它允许您完全按照自己的意愿执行操作,几乎所有配置都只在Interface Builder中完成。
答案 2 :(得分:0)
那么您可以使用库RHPreferencesWindowController。它很容易使用