1

画面に表示されず、親ビューを持たない NSView を (PDF に) 印刷しようとしています。

印刷ダイアログを表示するために、アプリのデリゲートに次の行を追加しましたapplicationDidFinishLaunching:

[myPrintView print:self];

下から上へのサブビュー

印刷ダイアログのプレビューでは、サブビューが下から上に表示されます。下部のサブビューが最初に表示され、次に下部のビューなどの上にある必要があるサブビューが表示され、上部のサブビューが最後に表示されます。

印刷ビューをスクロール ビューに追加して、印刷呼び出しの前に画面に表示されるようにすると、スクロール ビューと印刷プレビューの両方で順序が正しくなります。

self.scrollView.documentView = myPrintView;

正しい順序のサブビュー

印刷ビューを反転しないように変更すると、両方の状況で正しい順序で表示されますが、紙の下部に配置されます。

正しい順序ですが、ページの下部にあります

どうすればこれを解決できますか? めくったままにして間違った順序を解決しますか、それともめくったまま = NO にして別の方法を使用してページの上部に貼り付けますか?

役立つ場合に備えて、プロジェクトをhttps://bitbucket.org/bpeiren/print-experimentsに追加しました。

4

1 に答える 1

0

あいまいなレイアウトがあるように聞こえます。つまり、必要な場所にサブビューが表示されるようにするための十分な制約がペン先にありません。表示されている 2 つのレイアウトは両方とも制約を満たしているため、レイアウトのより多くの側面を制約して、必要な場所にサブビューが表示されるようにする必要があります。

あなたが投稿したレイアウトの2つの画像から判断すると、次のことを試してみることをお勧めします。

  1. トップ ビューの上部をコンテナーの上部に固定する
  2. トップ ビューとボトム ビューの間の垂直方向の間隔を固定する

追加: .xibをダウンロードしたところ、上部のサブビューをビューの上部に制限し、サブビューの垂直方向の間隔をページの下に制限していることは明らかです。それでは問題は解決しません。高さは可変ですか?そうでない場合は、コンテナの高さを制限してみてください。NSViews でテキスト フィールドと画像フィールドを囲んでいるのはなぜですか? それらを取り出す方が簡単かもしれません。(満足できない制約に関するログ メッセージを取得していませんよね?)

この WWDC ビデオ、Introduction to Auto Layoutは、私が見たあいまいなレイアウトについての最良の説明を提供しました。

デバッグの目的で、ビューをウィンドウに追加してから、この良い回答で説明されている自動レイアウトを操作できます。

または、このペン先の自動レイアウトをオフにすることもできます。ビューはシンプルなので、スプリングとストラットを使用して、昔ながらの方法でレイアウトを簡単に管理できます。

于 2012-12-30T19:18:31.197 に答える