在我的应用程序中,我有一个主窗口,我使用AVPlayer播放一些视频。为了强制特定的宽高比我使用setAspectRatio:方法。我将它放在我的应用程序的windowControllerDidLoadNib中:所以代码看起来像:
- (void)windowControllerDidLoadNib:(NSWindowController *)windowController
{
[super windowControllerDidLoadNib:windowController];
// adjust the player aspect ratio
[windowController.window setAspectRatio:NSMakeSize(1.85,1)];
...
...
}
问题是在我调整窗口大小之前,这个宽高比没有设置。
有谁知道问题可能在这里? 任何帮助都非常感谢。
答案 0 :(得分:2)
在调整窗口大小时,窗口的aspectRatio
是约束*。所以,是的,在用户尝试这样做之前它没有任何效果。
您需要将窗口的frame
显式设置为大小具有该宽高比的矩形,您需要自己计算该矩形。
确保正确区分窗口的框架矩形,窗口的内容矩形(与窗口的内容视图具有相同的大小)以及要播放的内容的大小。例如,您可能希望标题栏(它是框架的一部分)是该比率中的“1”的补充,而不是其中的一部分。
*不在NSLayoutConstraint意义上,只是一般意义上的。