我有一个alpha值为.5的UIView我添加了一个Alpha为1的 subview 。

subview 似乎继承了父级的alpha值。有没有一种方法可以使 subview 比其父 View 更加不透明?

代码看起来像这样:

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];

结果看起来像这样:

我希望能够看到灰色UIView下方的按钮,但看不到白色UITextField下方的按钮。我该怎么做呢?

最佳答案

设置inputPrompt的背景颜色的Alpha而不是直接设置其Alpha。

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

10-05 21:00