在调整窗口大小之前,setAspectRatio不起作用

时间:2013-05-16 17:30:22

标签: macos cocoa nswindow avplayer

在我的应用程序中,我有一个主窗口,我使用AVPlayer播放一些视频。为了强制特定的宽高比我使用setAspectRatio:方法。我将它放在我的应用程序的windowControllerDidLoadNib中:所以代码看起来像:

- (void)windowControllerDidLoadNib:(NSWindowController *)windowController
{
   [super windowControllerDidLoadNib:windowController];

   // adjust the player aspect ratio
   [windowController.window setAspectRatio:NSMakeSize(1.85,1)];
   ...
   ...
}

问题是在我调整窗口大小之前,这个宽高比没有设置。

有谁知道问题可能在这里? 任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:2)

在调整窗口大小时,窗口的aspectRatio是约束*。所以,是的,在用户尝试这样做之前它没有任何效果。

您需要将窗口的frame显式设置为大小具有该宽高比的矩形,您需要自己计算该矩形。

确保正确区分窗口的框架矩形,窗口的内容矩形(与窗口的内容视图具有相同的大小)以及要播放的内容的大小。例如,您可能希望标题栏(它是框架的一部分)是该比率中的“1”的补充,而不是其中的一部分。

*不在NSLayoutConstraint意义上,只是一般意义上的。