プログラムでUIViewを追加するiPad用のアプリを構築しています。ビューが読み込まれると、他の UIView を問題なく追加できます。ただし、UI がロードされた後、プログラムで UIView を作成してコーナーなどに追加しようとすると、他の UIView がシフトし、ビューが再描画されません (したがって、他の UIView とウィジェットの古い位置/サイズはも描かれています)。
この問題を回避するために何をすべきかについてのアイデアはありますか?
編集:問題を引き起こしているパネルのサイズを変更するコードは、ボタンが押されたときに呼び出される関数にあります。関数の要点は次のとおりです。
CGRect fooPanelFrame = CGRectMake(fBasePanelWidth,
50,
fBasePanelWidth,
panelHeight);
[_fooPanelView setFrame:fooPanelFrame];
「fooPanelView」は UIView 型です。これは、すべてが構築された後にサイズ変更される唯一のものです。他の UIView は、「viewDidLayoutSubViews」メソッドで (同様の方法で) サイズ変更されます。
編集:これはUIが以前のように見えるものです:
中央のフレームのサイズを変更すると、次のようになります。
青色はルート UIView の色です。
もう 1 つの注意点は、サイズ変更の前に、変更しているビューのサイズをログに記録すると、値は期待どおりであり、後ではないということです。私のテストでは、意図的にすべて 20 に設定していますが、戻ってくるフレームの値はそうではありません。これは、スーパービューに変更が必要な設定があることを意味するのだろうか...