我需要了解 NSView 如何自动调整它的视图。我已经在 IB 中设置了所有内容,并且我的子视图很好地调整了大小(当我用鼠标调整窗口大小时)。但是,如果我[myMainView setFrame:]
使用我的新框架矩形,则不会发生任何事情。我所有的子视图仍然是原始大小(即使主视图具有正确的尺寸)。Child'sresizeWithOldSuperviewSize:
被调用,但它的大小仍然不合适。
我在屏幕(屏幕#1)、标签、图像、视频上有一个充满可可元素的屏幕。这些元素有一个定义明确的布局。我已经通过界面生成器设置了自动调整大小的行为,效果很好。调整主窗口的大小以令人满意的方式调整元素的大小。
现在,用户单击“下一步”按钮,然后将绘制第二个全屏元素(屏幕#2)。我的布局是基于规范的屏幕尺寸(比如 800x600)构建的。但是现在窗口更大(或更小),因为它在屏幕 #1 中调整了大小。所以元素现在只占据窗口中的一小块区域,而不是适当地调整大小以填充可用空间。我想缩放这些元素。
我是否误解了自动调整大小的工作原理?如何手动触发 NSView 下的自动调整大小机制?
我可以做两件事:
- 根据当前屏幕尺寸相对于原始尺寸手动调整元素的大小。这个选项不是我最喜欢的,因为看起来,我不得不重写已经在 NSView 中工作的代码(自动调整大小的行为
- 我的第二个选择是调用前面提到的 NSView 的自动调整大小的魔法。文档暗示 [NSView setFrame:] 将为我做到这一点。我尝试的是,将我的内容视图调整为原始屏幕尺寸(800x600),渲染我的元素,然后将其调整为当前窗口大小。从概念上讲,它与手动调整窗口大小不同吗?它似乎不是。同样,此选项更可取,因为它最大限度地减少了已编写和维护的代码量。