MATLAB 2012a を実行していますが、厄介な回避策に頼らなければ完全に解決できない問題が発生しています。私は現在、ポップアップ メニューから値を選択すると、プライマリ フィギュアと子の uicontrols の高さを変更する GUI に取り組んでいます。以下は、メインの Figure の高さを更新するために使用されるコードを表しています。
% Update the figure height: [x y height width]
Position = get(handles.mainfigure, 'Position');
Position(4) = Position(4) + heightDelta;
set(handles.output, 'Position', Position)
ただし、Figure の高さが変更されると、すべての uicontrols が対応する方向に移動します。つまり、高さが増加するとすべての子が下に移動し、高さが減少するとすべての子が上に移動します。これは、単位が「正規化」以外の場合に適用されます (それ自体はさらに不安定です)。
同じデルタで子を反対方向にシフトすることでこれを簡単に回避できますが、uicontrols の位置に影響を与えずに図の高さを変更する方法はありますか? GUIDE で高さを変更する場合、この動作は発生しません。むしろ、コールバック イベント中にのみ表示されます。
「正規化された」単位では、一部のコントロールを上に移動し、一部のコントロールを下に移動しながら、テーブルの高さも変更します。なぜこれが起こっているのかわかりません。誰かが光を当てることができれば、私はそれを大いに感謝します.