StoneBreaker StoneBreaker - 4 months ago 10
iOS Question

View with low alpha - Subview with high alpha

I have a

UIView
with an alpha of .5
I have added a subview with an alpha of 1.

The subview seems to inherit the alpha value of the parent. Is there a way to make the subview more opaque than its parent view?

code looks like this:

CGRect promptFrame = CGRectMake(55, 80, 180, 50);
UIView *inputPrompt = [[UIView alloc] initWithFrame: promptFrame];
[inputPrompt setBackgroundColor: [UIColor darkGrayColor]];
[inputPrompt setAlpha: .5];
inputPrompt.layer.cornerRadius = 8;
inputPrompt.layer.masksToBounds = YES;

CGRect fileTextFieldFrame = CGRectMake(10, 15, 150, 25);
UITextField *filePrompt = [[UITextField alloc] initWithFrame: fileTextFieldFrame];
[filePrompt setBorderStyle:UITextBorderStyleRoundedRect];
[filePrompt setClearButtonMode:UITextFieldViewModeWhileEditing];
[filePrompt setBackgroundColor: [UIColor whiteColor]];
[filePrompt setAlpha: 1];


The result looks like this:
enter image description here

I would like to be able to see the button below the gray
UIView
but not below the white
UITextField
. How do I do this?

Answer

Set the inputPrompt's background color's alpha not it's alpha directly.

[inputPrompt setBackgroundColor:[[UIColor darkGrayColor] colorWithAlphaComponent:0.5]];
//[inputPrompt setAlpha: .5];