Make an empty button with something like this:
UIGraphicsBeginImageContextWithOptions(size,0,0);
[button.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
From there, it's not half alpha (fill it with a 50% opaque rectangle in the “DestOver” blending mode before you pull out the image?). Then set it as the background for the custom button.
Icky. Oh good.
; , .