我的UIView上有一个带有图层的框架。我让图层设置背景颜色并使alpha为0.5并使frame.backgroundColor = clearColor,以便人们可以看到它背后的线条。然而,它使得持有文本的子视图也逐渐淡出。我该如何防止这种情况?
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
[self setAlpha:kAlpha];
CALayer *layer = [self layer];
[layer setMasksToBounds:YES];
[layer setBackgroundColor:[UIColor redColor].CGColor];
[layer setCornerRadius:kCornerRadius];
}
return self;
}
- (id)init
{
if (self = [super init]) {
self.clipsToBounds = YES;
self.userInteractionEnabled = YES;
self.multipleTouchEnabled = NO;
tileTitle = [[UILabel alloc] init];
tileTitle.textColor = [UIColor blackColor];
tileTitle.backgroundColor = [UIColor clearColor];
tileTitle.font = [UIFont boldSystemFontOfSize:13.0f];
tileDescription = [[UILabel alloc] init];
tileDescription.textColor = [UIColor blackColor];
tileDescription.backgroundColor = [UIColor clearColor];
tileDescription.font = [UIFont systemFontOfSize:11.0f];
tileDescription.lineBreakMode = UILineBreakModeTailTruncation;
[self addSubview:tileTitle];
[self addSubview:tileDescription];
}
return self;
}
答案 0 :(得分:3)
要更改视图的透明度,而不是其子视图,可以更改其背景颜色:
myView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.25];
此方法也适用于CALayer。
答案 1 :(得分:1)
你不能在所有uiview上设置alpha值,你必须用alfa设置颜色。
[self.view setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]];
答案 2 :(得分:0)
使用子视图(与UIView具有相同的大小)并将子视图上的颜色和alpha设置为所需的透明度,而不是设置视图的alpha。将顶级UIView的backgroundColor设置为clearColor。