首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调整NSPanel大小以适应动态NSMatrix和按钮

调整NSPanel大小以适应动态NSMatrix和按钮
EN

Stack Overflow用户
提问于 2009-09-03 18:24:48
回答 1查看 770关注 0票数 0

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

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

我已经尝试了很多关于获取边界和设置帧的事情,并且一直有很多困惑。

有没有什么标准的或正确的方法来调整面板的大小?

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

谢谢

EN

回答 1

Stack Overflow用户

发布于 2009-09-04 03:23:28

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

视图的原点是左上角还是左下角取决于其superview是否翻转。翻转视图的边界原点在左上角。

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

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

代码语言:javascript
复制
//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];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1375105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档