@Christopher Fairbaim is right to suggest the use of UIButtonTypeCustom. Using UIButtonTypeRoundedRect will give you the white background in transparent areas.
However, wiring things up in Interface Builder has its limitations. If you want to dynamically generate UIViews, UIButtons, and assets from either a data set or based off of user input, doing so programmatically is the way to go.
To create the button: (Note: this will also work with other UIButtonTypes, but I've used UIButtonTypeCustom for this particular transparency example.)
UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom];
To change desired properties:
btnName.backgroundColor = [UIColor clearColor];
btnName.frame = CGRectMake(100, 100, 72, 37); //(X coord, Y coord, width, height)
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside];
To add images for various states (assume these are transparent .png's):
UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"];
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal];
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"];
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted];
To add the button to the view (from within a viewController class):
[self addSubview:btnName];
(Pardon any typos, as I copied and pasted from one of my projects and tried to generalize the naming.)