gpt4 book ai didi

objective-c - 调整 NSPanel 的大小以适应动态 NSMatrix 和按钮

转载 作者:行者123 更新时间:2023-12-03 18:06:42 26 4
gpt4 key购买 nike

我有一个 NSMatrix,它动态填充了一些表单项。现在,我可以方便地调用[theMatrix sizeToCells],然后将其传递到要显示的面板中。

现在,我希望包含此 NSMatrix 的 NSPanel 对象调整大小以很好地包裹它。 NSPanel 底部还有一个按钮,应位于 NSMatrix 下方。

我一直在尝试很多关于获取边界和设置框架的事情,但一直很困惑。

是否有任何标准或正确的方法来根据其内容调整面板大小?

作为一个附带问题:框架的原点是指它的左上角还是左下角?它总是一致吗?

谢谢

最佳答案

NSPanel/NSWindow 框架的原点始终是左下角,它是从屏幕原点测量的。

View 的原点是左上角还是左下角取决于其父 View 是否翻转。翻转 View 的边界原点位于左上角。

要执行您想要的操作,您需要获取 NSMatrix 的帧大小,然后重新计算面板的布局。

类似这样的东西(写在这里,未经测试!):

//NSMatrix* matrix;
//NSPanel* panel;
CGFloat panelMargin = 10.0;
CGFloat matrixBottomMargin = 30.0;

[matrix sizeToCells];
NSRect matrixFrame = [matrix frame];

NSRect panelFrame = [panel frame];

NSSize newPanelSize = NSMakeSize(NSWidth(matrixFrame) + 2.0 * panelMargin,
NSHeight(matrixFrame) + 2.0 * panelMargin + matrixBottomMargin);

CGFloat yDelta = newPanelSize.height - NSHeight(panelFrame);

panelFrame = NSMakeRect(panelFrame.origin.x,
panelFrame.origin.y - yDelta,
newPanelSize.width,
newPanelSize.height);
[panel setFrame:panelFrame display:YES];

关于objective-c - 调整 NSPanel 的大小以适应动态 NSMatrix 和按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375105/

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