Only way I think of doing it is having a custom UIView and set that as default view of your top most UIViewController. Inside that UIView's drawRect() method you can draw whatever shapes you want (transparent included). Like if you want to draw a transparent circle in the middle of your controller, you would do this in drawRect() of your UIView:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor orangeColor] setFill]; //background Fill
CGContextFillRect(context, self.bounds);
[[UIColor clearColor] setFill]; //circle Fill.
CGContextFillEllipseInRect(context, (CGRect){self.center.x - 25.0f, self.center.y - 25.0f, 50.0f, 50.0f});
}
In initWithFrame: of the same UIView add this:
[self setBackgroundColor:[UIColor clearColor]];
P.S: As mentioned by @Lefteris Obviously set your UIViewController's UIModalPresentationStyle to OverCurrentContext so that it appears over the same controller.
Note: by transparent I meant the area of top controller which shows contents of the controller underneath, as you wanted.