View with low alpha - Subview with high alpha

2019-02-02 06:58发布

问题:

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:

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?

回答1:

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

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