I have a first solution, which is a bit verbose because it needs first this [great code][1] and then it adds a third empty column, but for now it's the best I can do. I'll also look at overlayarea
as proposed by samcarter.
\documentclass[]{beamer}
% https://tex.stackexchange.com/questions/44218/set-image-to-full-all-available-space-in-beamer-without-overlapping-other-eleme/44298#44298
% Chate sidebarthemefalse to sidebarthemetrue if you have a sidebar
\newif\ifsidebartheme
\sidebarthemefalse
\newdimen\contentheight
\newdimen\contentwidth
\newdimen\contentleft
\newdimen\contentbottom
\makeatletter
\newcommand*{\calculatespace}{%
\contentheight=\paperheight%
\ifx\beamer@frametitle\@empty%
\setbox\@tempboxa=\box\voidb@x%
\else%
\setbox\@tempboxa=\vbox{%
\vbox{}%
{\parskip0pt\usebeamertemplate***{frametitle}}%
}%
\ifsidebartheme%
\advance\contentheight by-1em%
\fi%
\fi%
\advance\contentheight by-\ht\@tempboxa%
\advance\contentheight by-\dp\@tempboxa%
\advance\contentheight by-\beamer@frametopskip%
\ifbeamer@plainframe%
\contentbottom=0pt%
\else%
\advance\contentheight by-\headheight%
\advance\contentheight by\headdp%
\advance\contentheight by-\footheight%
\advance\contentheight by4pt%
\contentbottom=\footheight%
\advance\contentbottom by-4pt%
\fi%
\contentwidth=\paperwidth%
\ifbeamer@plainframe%
\contentleft=0pt%
\else%
\advance\contentwidth by-\beamer@rightsidebar%
\advance\contentwidth by-\beamer@leftsidebar\relax%
\contentleft=\beamer@leftsidebar%
\fi%
}
\makeatother
\begin{document}
\begin{frame}{Test}
\begin{columns}
\begin{column}{.4\textwidth}
A
\end{column}
\begin{column}{.4\textwidth}%
\only<1>{B}
\only<2>{C\\D}
\only<3>{C\\D\\E}
\only<4>{C\\D\\E\\F}
\end{column}
\begin{column}{0pt}
\calculatespace%
\vline height 0.95\contentheight
\end{column}
\end{columns}
\end{frame}
\end{document}
Edit: Here is the same thing, but with \parbox
instead. The code has the same length because the "hard" part is to guess the height, and that code is needed in both solutions.
\documentclass[]{beamer}
% https://tex.stackexchange.com/questions/44218/set-image-to-full-all-available-space-in-beamer-without-overlapping-other-eleme/44298#44298
\newif\ifsidebartheme
\sidebarthemetrue
\newdimen\contentheight
\newdimen\contentwidth
\newdimen\contentleft
\newdimen\contentbottom
\makeatletter
\newcommand*{\calculatespace}{%
\contentheight=\paperheight%
\ifx\beamer@frametitle\@empty%
\setbox\@tempboxa=\box\voidb@x%
\else%
\setbox\@tempboxa=\vbox{%
\vbox{}%
{\parskip0pt\usebeamertemplate***{frametitle}}%
}%
\ifsidebartheme%
\advance\contentheight by-1em%
\fi%
\fi%
\advance\contentheight by-\ht\@tempboxa%
\advance\contentheight by-\dp\@tempboxa%
\advance\contentheight by-\beamer@frametopskip%
\ifbeamer@plainframe%
\contentbottom=0pt%
\else%
\advance\contentheight by-\headheight%
\advance\contentheight by\headdp%
\advance\contentheight by-\footheight%
\advance\contentheight by4pt%
\contentbottom=\footheight%
\advance\contentbottom by-4pt%
\fi%
\contentwidth=\paperwidth%
\ifbeamer@plainframe%
\contentleft=0pt%
\else%
\advance\contentwidth by-\beamer@rightsidebar%
\advance\contentwidth by-\beamer@leftsidebar\relax%
\contentleft=\beamer@leftsidebar%
\fi%
}
\makeatother
\begin{document}
\begin{frame}{Test}
\begin{columns}
\begin{column}{.4\textwidth}
\calculatespace
% https://tex.stackexchange.com/questions/83672/beamer-vertically-center-picture-inside-overlayarea
\parbox[t][\contentheight][t]{\linewidth}{
A
}
\end{column}
\begin{column}{.4\textwidth}%
\only<1>{B}
\only<2>{C\\D}
\only<3>{C\\D\\E}
\only<4>{C\\D\\E\\F}
\end{column}
\end{columns}
\end{frame}
\end{document}
[1]: https://tex.stackexchange.com/questions/44218/set-image-to-full-all-available-space-in-beamer-without-overlapping-other-eleme/44298#44298