重叠不同颜色和Alpha的UIViews
有没有办法重叠2个或更多的UIViews
与不同的背景颜色和alphas给出另一种颜色的外观? 例如,在一个蓝色的UIView
顶部放置一个红色的UIView
,以给出一个洋红色的UIView
的外观。
在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
)
你可以像这样使用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创build方法手动获取所需的颜色,在单个视图中实现起来更容易:
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值表示不透明度。
这给了一个紫色的看法,没有问题。
- (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]; }
下面的方法为我工作
- (void)viewDidLoad { [super viewDidLoad]; CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeColor); }