1

私のアプリには、AVPlayer を使用してビデオを再生するメイン ウィンドウがあります。特定のアスペクト比を強制するために、setAspectRatio: メソッドを使用しています。アプリの windowControllerDidLoadNib: に配置したので、コードは次のようになります。

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

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

問題は、ウィンドウのサイズを変更するまで、このアスペクト比が設定されないことです。

ここで何が問題なのか知っている人はいますか?どんな助けでも大歓迎です。

4

1 に答える 1

2

ウィンドウのaspectRatioは、ウィンドウのサイズ変更時の制約*です。ええ、ユーザーがそれをしようとするまで何の効果もありません。

ウィンドウframeをそのアスペクト比のサイズの長方形に明示的に設定する必要があり、その長方形を自分で計算する必要があります。

ウィンドウのフレーム四角形、ウィンドウのコンテンツ四角形 (ウィンドウのコンテンツ ビューと同じサイズ)、および再生するコンテンツのサイズを適切に区別してください。たとえば、タイトル バー (フレームの一部) を、フレームの一部ではなく、その比率で「1」に加えたいと思うでしょう。

* NSLayoutConstraint の意味ではなく、一般的な意味です。

于 2013-05-17T04:52:21.963 に答える