views:

1015

answers:

4

We're creating an immersive app that needs to have something that acts rather similar to a UIAlertView, but we don't want it to look like a system dialog, we want to use our own graphics. I've got a big chunk of the work done, but there are a few snags I've hit:

  1. How do I make the UIView show up above the status bar (so that I can darken in, like a UIAlertView does)? Is this possible? I've added it to the window, but it still shows up underneath the status bar.

  2. How do I show it partially transparent but have the text still fully opaque? I want it to be shown similar to a UIAlertView in that it should be translucent, but if I set alpha to .8, that also decreases the alpha of subviews. If I only decrease the alpha of the background image, then the buttons appear opaque. If I decrease the alpha of the background image and the buttons, then the buttons don't look like they are embedded in the background image. I would very much like to not have to create a different image for each arrangement of embedded buttons

Edit: I haven't yet found a solution to the status bar issue, but I've noticed that a standard UIAlertView shows up in its own UIWindow, and when I investigated that, I found the windowLevel property:

const UIWindowLevel UIWindowLevelNormal;
const UIWindowLevel UIWindowLevelAlert;
const UIWindowLevel UIWindowLevelStatusBar;

Using my own UIWindow with UIWindowLevelAlert still didn't make it show up above the status bar. I didn't try UIWindowLevelStatusBar.

A: 

If the default behavior of UIAlertView works for you, I'd suggest changing the default look of the dialog. You can for example use the example code from this discussion and provide your own image.

Markus Müller
We need something a bit different, so we need to make our own.
Ed Marty
A: 

How do I make the UIView show up above the status bar (so that I can darken in, like a UIAlertView does)? Is this possible?

I don't think Apple makes this available to a non-UIAlertView subclass of UIView.

UIAlertView is a subclass of UIView. Have you tried subclassing UIAlertView and overriding -drawRect: with your own drawing code?

Alex Reynolds
I accept this answer not because subclassing and overriding drawRect: works for me (it doesn't. I've made specific statements that we can't use that class) but because I've resigned myself to the fact that Apple doesn't make this available.
Ed Marty
You might consider filing a feature request at http://bugreport.apple.com
Alex Reynolds
A: 

What about working around the issue by hiding the status bar when the alert is displayed? That would make it more "alerty" anyway...

Kendall Helmstetter Gelner
A: 

For the opacity issue: have you considered embedding button graphics into the background image, and making the button controls themselves transparent, changing the background image every time a button is pushed down or released?

igul222
If you read the end of my question, notice I said "I would very much like to not have to create a different image for each arrangement of embedded buttons"
Ed Marty
Ah- sorry, I don't catch that bit. Perhaps keep blank, transparent parts in your background image which line up with the buttons?
igul222
again, every time the alignment of the buttons change, I would have to have a different background image.
Ed Marty