Make UIAxes invisible/visible when stacked in App desginer..

18 visualizaciones (últimos 30 días)
Jack Latham
Jack Latham el 1 de Oct. de 2019
Editada: Adam Danz el 20 de Sept. de 2020
I'm using App designer to desing an app.. I have a couple of UIAxes stacked above each other, and am trying to set ones I want to see to being visible and the others to not visible, using:
app.UIAxes.Visible = 'off';
Which works fine, but the UIAxes below remains hidden! For example if I have two axes overlapping only partially, and make the one 'on top' invisible, the one 'on top' goes, but the portion on the other axes which was hidden, remains hidden!!
Frustating problem, any solutions would be great!

Respuesta aceptada

Adam Danz
Adam Danz el 1 de Oct. de 2019
Editada: Adam Danz el 20 de Sept. de 2020
Update: Starting in Matlab r2020b, change the stack order of UI components in App Designer using the reorder tool (see release notes).
----------------------------------------------------------------------------------------
Unfortunately uistack() is not functional with UIFigures (prior to r2020b). Here's a function you could embed in your app that will put an object on top of the UI stack. Add the function by opening the app in app designer, go to code view, select functions, and add the function by pressing the green "+" under the Code Browser. Then call the function any time an object needs to be moved to top. Unfortunately the app image will flicker during the restack as the objects are redrawn.
function uistackTop(~, appfig, obj)
% Place the UI object 'obj' on top of stack in the UIfigure 'appfig'
appHandles = appfig.Children; % list all handles in app
hIdx = find(appHandles==obj); % find index of obj in appHandles
% Create new index order of app handles
newOrder = [hIdx,setdiff(1:numel(appHandles),hIdx)];
% assign new stack order to app
appfig.Children = appHandles(newOrder);
Example:
appfig = app.myAppFig; % Handle to your App figure
obj = app.UIAxes2; % handle to the object that goes on top
uistackTop(app, appfig, obj)
Also see this answer for a function that moves a UI object to the bottom of the stack.
  2 comentarios
Jack Latham
Jack Latham el 4 de Oct. de 2019
Thank you for the answer! I ended up plotting to a Panel and making new axis instead when I wanted the new view, this solution may be better
Adam Danz
Adam Danz el 4 de Oct. de 2019
That's not a bad idea.
Another idea might be to use UI Tabs. Instead of making new axes or changing the UI stack, you can just switch back and forth between tabs that are all located in the same position.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Develop uifigure-Based Apps en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by