是否有办法将2个或更多UIViews
与不同的背景颜色和alpha重叠,以提供另一种颜色的外观?例如,在蓝色UIView
上方放置一个红色的UIView
,以显示单个洋红色UIView
的外观。
答案 0 :(得分:3)
在iOS上,如果所谓的“来源过度”模式,则是视图的唯一混合模式。
基本上RGB_result = RGB_back *(1 - Alpha_front)+ RGB_front * Alpha_front
因此,在蓝色(0,0,1)视图顶部以0.5 alpha的红色(1,0,0)视图将导致深品红色(0.5,0,0.5)
如果您需要其他混合模式,请考虑使用CoreGraphics进行绘制(例如CGContextSetBlendMode
)
答案 1 :(得分:0)
你可以像这样使用alpha属性:
UIView *redView = [[UIView alloc] initWithFrame: CGRectMake(0,0,20,20)];
redView.backgroundColor = [UIColor redColor];
UIView *blueView = [[UIView alloc] initWithFrame: CGRectMake(0,0,20,20)];
blueView.backgroundColor = [UIColor blueColor];
blueView.alpha = 0.5;
[redView addSubview: blueView];
注意,通过使用UIColor的RGB创建方法手动获取所需的颜色,在单个视图中更容易实现:
UIView *magentaView = [[UIView alloc] initWithFrame: CGRectMake(0,0,20,20)];
UIColor *magenta = [UIColor colorWithRed: 1
green: 0
blue: 1
alpha: 1];
magentaView.backgroundColor = magenta;
RGB值介于0和1之间,注意(通常不会指定标准0 - > 255范围)。 alpha值表示不透明度。
答案 2 :(得分:0)
这给出了紫色视图,没问题。
- (void)viewDidLoad
{
[super viewDidLoad];
UIView *view1 = [[UIView alloc] initWithFrame:self.view.bounds];
view1.backgroundColor = [UIColor colorWithRed:1.f green:0.f blue:0.f alpha:0.5f];
[self.view addSubview:view1];
view1 = [[UIView alloc] initWithFrame:self.view.bounds];
view1.backgroundColor = [UIColor colorWithRed:0.f green:0.f blue:1.f alpha:0.5f];
[self.view addSubview:view1];
}
答案 3 :(得分:0)
以下方法为我工作
- (void)viewDidLoad {
[super viewDidLoad];
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeColor);
}