创建一个带有UILabel的alpha UIView

4
我想创建一个带有透明度和标签的UIView。
但我希望UILabel在最前面,就像这样:
如何实现?
以下是代码:
- (void)viewDidLoad {
  [super viewDidLoad];

  self.view.backgroundColor = [UIColor redColor];

  UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 200, 20)];
  lbl.text = @"AAAAAA";
  lbl.backgroundColor = [UIColor clearColor];

  UIView *v = [[UIView alloc] initWithFrame:CGRectMake(50, 210, 230, 50)];
  v.backgroundColor = [UIColor greenColor];
  v.alpha = 0.5;
  [v addSubview:lbl];

  [self.view addSubview:v];

}

绿色视图的透明度为0.5,像文本一样,这是错误的!

谢谢。

3个回答

13

不要设置整个视图的透明度,而是将背景颜色设置为带有透明度的颜色。

因此,请将其更改为:

v.backgroundColor = [UIColor greenColor];
v.alpha = 0.5;

变为这样:

v.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:0.5];

@Paska 当您设置整个视图的 alpha 值时,标签是该视图的一部分,因此其 alpha 值也会被设置。当您仅设置视图背景颜色的 alpha 值时,则不会影响标签。 - theChrisKent

2

如果您想使用内置颜色,请参阅colorWithAlphaComponent:

accessoryView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:0.4];

0
在XCode 4界面构建器中,您可以通过单击视图的背景属性,单击“其他”并在出现的颜色选择器中选择颜色和不透明度值来实现此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接