2012-02-09 10 views
0

私は非常に奇妙な問題だと思っています。同じコマンド、別の結果setFrame:NSView

まず第一に、私のアプリケーションは、次の例のコマンドを使用して、画面の周りのUI要素を移動:

[view setFrame:NSRectFromCGRect(CGRectMake(0, 0, 0, 0))]; 

私は私のユーザーが、このコマンドで一つの他のサイズへのアプリケーションのNSWindowのサイズを変更する可能性を与える:

[self.window setFrame:NSRectFromCGRect(CGRectMake(0, 0, 0, 0)) display:YES animate:YES]; 

「サイズ変更モード」では、私は明らかにすべての単一のsetFrameコマンドを適切な座標系に変更します。

しかし、ユーザーがボタンを再度クリックして元のNSWindowサイズに戻ったときに、アプリケーションが再度UIの移動を実行すると、移動したビューは表示されません。

明確にするために:私のUIの動きのコードは、通常のモードまたはサイズ変更されたモードで、細かく何度も何度も繰り返し実行されます。しかし、一方から他方に切り替えると、一部の項目(すべてではない)がシフトされます。

この奇妙な動作の原因は何でしょうか?私は(画面の解像度ごとに)同じ正確なコマンドを使用しており、NSLogsはUI要素が指定した場所にあることを確認します。しかし、この場所はと明確にに移動しようとしています。

誰も同じような問題を経験しましたか?

答えて

0

これを理解しようとしてから、私は次の結論に至りました。サイズ変更コードは単純に機能しませんでした。

私はウィンドウのサイズを変更した後、NSLogを使ってこれを確認しました。最後に、従来のsetFrame:メソッドの後に次の行を追加してサイズ変更コードを変更しました。

1

おそらく、インターフェイスビルダーで手動レイアウトを妨害する自動サイズ変更マスクを設定している可能性があります。あなたのペン先に行き、サイズインスペクタですべてのスプリングとストラットを取り外します。可能であれば、自動サイズ設定で配置を処理するか、10.7で導入された自動レイアウトに移行する必要があります。

+0

これは可能ですが、確認する必要があります。しかし、私は自動サイズ変更を使用していますが、ウィンドウのサイズを変更した後でもオブジェクトを移動する必要があります。だから、これは私が完全に自動サイズ調整を行い、自動サイズ調整の代わりにsetFrameを使うことを意味しますか? – elliottbolzan

+0

すべてのオブジェクトを手動で配置する必要がある場合は、自動化をオフにするとデバッグが簡略化されます。 – paulmelnikow