我需要了解如何NSView autoresizes它的意见。我已经把一切都在IB和我有关子视图处调整很好(当我调整我的窗口周围的鼠标)。然而,如果我这样做 [myMainView setFrame:] 与我的新框架rect,什么也不会发生。我所有的子景仍然是原来的大小(即使主要视具有正确的尺寸)。孩子的 resizeWithOldSuperviewSize: 被称,但它仍然是不适当的。

我有一个屏幕的完整的可可元素在屏幕(屏幕#1)、标签、图像、视频。有一个良好的定义的布局对这些要素。我已经安装自动调整的行为,通过接口的建设者的作品非常好。调整的主要窗口调整因素中的一个令人满意的方式。

现在,在用户点击的"下一步"按钮,于是第二screenfull的元素(屏幕#2)。我的布局是建立基于规范的屏幕尺寸(说,800x600).但现在窗口大(或较小),因为它是调整在屏幕上#1.这样的元素现在只是一个小区域的窗口,而不是被适当尺寸的来填补现有的空间。我想扩展,这些要素。

我误解如何自动调整工作的?我怎么能触发autoresize机械下NSView手动?

有两件事情我可以做到:

  1. 手工调整要素的基础上目前的屏幕上的大小相对于原有的大小。这种选择不是我最喜欢的因为看起来,我被迫重写代码已经工作在NSView(该自动调整的行为
  2. 我的第二选择是以援引上述NSView的自动调整的魔法。文件意味着[NSView setFrame:]将为我做的。我已经试过,调整我的内容看到原始的屏幕尺寸(800x600),呈现我的元素,然后将其调整到当前窗的大小。从概念上讲,它是不相同的手工调整窗口?它似乎不可能的。再次,这种选择是优选的,因为它最大限度地减少量的代码,有te被写入和维持。
有帮助吗?

解决方案 2

原来我的方法是正确的。我被设定的框架尺寸错误的价值,因此我没有得到预期的行为。卫生署。

其他提示

这个代码

NSView* superView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
NSView* subView   = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
[superView addSubview:subView];

[superView setAutoresizesSubviews:YES];
[subView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];

NSLog(@"subview's frame before resizing: %@", NSStringFromRect([subView frame]));
[superView setFrame:NSMakeRect(0, 0, 200, 100)];
NSLog(@"subview's frame after  resizing: %@", NSStringFromRect([subView frame]));

不会给预期成果:

[...] subview's frame before resizing: {{0, 0}, {100, 100}}
[...] subview's frame after  resizing: {{0, 0}, {200, 100}}

你的问题是在其他地方。我希望你的一个容器的风景不是一个部分的观层的窗口时调整的发生。

一个很好的解决你的问题可能会使用一个NSTabView没有标签,因为然后你所有的观点是,在所有的时间窗口(可能隐藏)和tabview需要照顾的调整。

另一个办法是,把若干视上每一个其他和使用 setHidden: 显示只有一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top