1

現在取り組んでいるプログラムでは、メインウィンドウのアスペクト比をロックして、一部の視覚要素の比率が維持されるようにしたいと思います。

AppDelegateクラスで次のことを行うことで、これを機能させることができました。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 

    [window setAspectRatio:NSMakeSize(1.48, 1.0)];

}

ユーザーがウィンドウをドラッグするたびに、アスペクト比は予想どおりにロックされますが、1つの問題があります。アスペクト比に準拠する592x400のウィンドウサイズをIBで指定しましたが、アプリケーションの実行中にウィンドウのサイズを最初に変更しようとすると、ウィンドウの種類がすぐに新しい比率にスナップします。setAspectRatio:がウィンドウ上部のバーに取り込まれている可能性があるため、計算が混乱している可能性があります。

この問題に対する適切な回避策、または代替アプローチを知っている人はいますか?

また、setAspectRatioによって設定されたアスペクト比を尊重するプログラムでウィンドウのサイズを変更する別の方法はありますか?

以前、プログラムでサイズを変更するときは、次のものを使用していました。

[window setContentSize:NSMakeSize(592, 400)];

予想どおり、指定されたアスペクト比を無視することを確認するためにテストしました。

ありがとう!

4

1 に答える 1

3

IBのサイズはコンテンツのサイズであり、タイトルバーの22ポイントは含まれていません(標準のタイトルバーを想定)。setContentAspectRatio:代わりに使用する必要があります。

プログラムによるサイズ変更に関しては、そのためのAPIはありません。前と同じように、どのディメンションを参照するかを決定し、コンテンツのアスペクト比で適切に乗算または除算して、他のディメンションを取得する必要がありますsetContentSize:

于 2012-11-22T03:13:00.363 に答える