I am using the standard way of making shadows from a button programmatically, but I would like to shadow to no longer exist after I am done with the button. I could set opacity
I would just remove the button, and replace it with an identical (but non-shadowed) button. Or keep both around and hide/unhide one of them. Sometimes it's easier to create a new UI object than munge around with an existing one.
I usually do the following to be safe.
[[tempButton layer] setShadowOpacity:0.0];
[[tempButton layer] setShadowRadius:0.0];
[[tempButton layer] setShadowColor:nil];
Quartz is highly optimized and will not waste any time rendering if it doesn't have to.