【问题标题】:setAspectRatio doesn't work until the window is resized在调整窗口大小之前,setAspectRatio 不起作用
【发布时间】:2013-05-16 17:30:21
【问题描述】:

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

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

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

问题是在我调整窗口大小之前不会设置此纵横比。

有谁知道这可能是什么问题? 非常感谢任何帮助。

【问题讨论】:

    标签: macos cocoa nswindow avplayer


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-18
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多