2

やや熟練した iOS 開発者である私は、Cocoa でデスクトップ OSX プロジェクトに取り組み始めたばかりで、把握できない問題に直面しています。したがって、この質問は OSX 開発者向けです。

私は Interface Builder があまり好きではないので、ビューをコードで記述する傾向があります。私がビュー レイアウト コードを記述する最も顕著な方法はビュー コントローラーのloadViewメソッドであり、少なくとも iOSではすべてに sを使用autoresizingMaskします。小さい、大きい、回転した横向きと縦向きのビューを試してみて、すべてが適切であれば、リストの次の項目に進みます。デスクトップでは、autoresizingMask動作 (または外観) が少し異なります。まず第一に、プロパティにはさまざまな名前がありますが、それらの動作も奇妙または予期しないように見えます。

以下の問題に遭遇したとき、コードが間違っているに違いないと思ったので、十分に長く試した後、確認のためにInterface Builderで再作成しましたが、まったく同じ結果が得られました. 垂直に積み重ねられた 4 つのサブビューを含むビューを取得します。真ん中の 2 つの高さを柔軟に設定し、外側の 2 つを固定します。実行してサイズを小さくし、再度元に戻すと、サイズ変更の前後で 2 つの完全に異なるレイアウトが得られます。画像を参照してください:

ここに画像の説明を入力

これで、実行ループ間で数学的な観点からこれが発生する理由を理解できますが、「自動サイズ変更」または「自動サイズ変更」機能の観点からは、これはまったく意味がありません。

すべてのサイズ変更の母となるトピックをここに書き込もうとする前に、これらの質問をしてもよろしいですか? 投稿に追加されると思われる場合は、サイズ変更のトピックについてさらに詳しく説明してください.

  1. デスクトップ プロジェクトで Interface Builder を使用したくないのはばかですか?
  2. autoresizingMaskiOS プロジェクトよりも少ないものに依存する必要がありますか?
  3. Interface Builder を使用せずに、レイアウトが標準に準拠していることを確認するための適切な代替手段は何ですか?

乾杯!

4

2 に答える 2

1
  1. はい、私の意見では。:)

  2. 必要なことを行うときは、それに依存する必要があります。不十分な場合は、resizeSubviewsWithOldSize:and/or resizeWithOldSuperviewSize:(または以下を参照) をオーバーライドします。

  3. ???

10.7 をターゲットにできる場合は、新しい制約ベースのレイアウト システムに注目してください。WWDC 2011のCocoa Autolayoutビデオをご覧ください。

特異点を防ぐのに十分な大きさの何かに設定することもできminSizeます。NSWindow

于 2012-01-22T21:33:46.530 に答える
1
  1. 「ばか」とは言えませんが、Mac で Interface Builder を使用することを拒否するのは、非常に前衛的な選択です。

  2. ビューでは必ず自動サイズ調整を使用する必要があります。

  3. マニアックに注意を払い、すべてが正しいことを確認するために多くの時間を費やしてください。(これが、私が Interface Builder なしで行くことをお勧めしない理由です。一般に、得られるのは、他のことをするのに費やすことができた多くの無駄な時間です。)

この場合、ウィンドウの適切な最小高を設定するのが最善の方法だと思います。表示する必要があるものを表示するには、小さすぎないようにしてください。

于 2012-01-22T21:34:11.930 に答える