我正在运行 MATLAB 2012a,遇到一个问题,如果不采取丑陋的解决方法,我就无法完全解决。我目前正在开发一个 GUI,它将在从弹出菜单中选择一个值时调整主要图形和子 uicontrols 的高度。下面表示用于更新主图高度的代码:
% Update the figure height: [x y height width]
Position = get(handles.mainfigure, 'Position');
Position(4) = Position(4) + heightDelta;
set(handles.output, 'Position', Position)
但是,当图形的高度发生变化时,所有的 uicontrols 都会向相应的方向移动。也就是说,如果高度增加,所有孩子都向下移动,而如果高度降低,所有孩子都向上移动。这适用于单位不是“标准化”(其本身更加不稳定)的情况。
虽然我可以通过将孩子向相反方向移动相同的增量来轻松解决这个问题,但有没有办法在不影响 uicontrols 位置的情况下更改图形高度?在 GUIDE 中更改高度时不会发生此行为;相反,它只在回调事件期间出现。
使用“标准化”单位,它也会导致表格改变高度,同时向上移动一些控件和向下移动一些控件。我无法弄清楚为什么会这样。如果有人能阐明任何观点,我将不胜感激。