title: UIView transparency shows how the sausages are made!
body: <p>I have a <code>UIView</code> container that has two <code>UIImageView</code>s inside it, one partially obscuring the other (they're being composed like this to allow for occasional animation of one "layer" or another.</p>
  
  <p>Sometimes I want to make this container 50% alpha, so what the users sees fades. Here's the problem: setting my container view to 50% alpha makes all my subviews inherit this as well, and now you can see through the first subview into the second, which in my application has a weird X-Ray effect that I'm not looking for. </p>
  
  <p>What I'm after, of course, is for what the user currently sees to become 50% transparent-- the equivalent of flattening the visible view into one bitmap, and then making that 50% alpha.</p>
  
  <p>What are my best bets for accomplishing this? Ideally would like to avoid actually, dynamically flattening the views if I can help it, but best practices on that welcome as well. Am I missing something obvious? Since most views have subviews and would run into this issue, I feel like there's some obvious solution here.</p>
  
  <p>Thanks!</p>
  
  <p>EDIT: Thanks for the thoughts folks. I'm just moving one image around on top of another image, which it only partially obscures. And this pair of images has to move together sometimes, as well. And sometimes I want to fade the whole thing out, wherever it is, and whatever the state of the image pair is at the moment. Later, I want to bring it back and continue animating it.</p>
  
  <p>Taking a snapshot of the container, either by rendering its layer (?) or by doing some other offscreen compositing on the fly before alpha'ing out the whole thing, is definitely possible, and I know there are a couple ways to do it. But what if the animation should continue to happen while the whole thing's at 50% alpha, for example?</p>
  
  <p>It sounds like there's no obvious solution to what I'm trying to do, which seems odd to me, but thank you all for the input. </p>