我有一个UIView w / c我在viewForHeaderInSection中作为视图返回。现在,我想在视图的右下方制作一个小透明方块,以便透视细胞。我怎样才能实现这样的目标?我需要使用这个CGContextSetBlendMode吗?任何人都可以阐明这一点。
答案 0 :(得分:0)
视图作为子视图插入到SwitchViewController.view中。因此,它们将始终显示在SwitchViewControllers视图上方。删除了另一个视图,一次只显示一个视图
e.g。这里
[yellowViewController.view removeFromSuperview];
[self.view insertSubview:blueViewController.view atIndex:0];
默认情况下,视图显示在其子视图后面,
insertSubview:atIndex:
不能将它放在视图本身后面,因为视图不包含在自己的子视图列表中。
答案 1 :(得分:0)
这是一个UIView子类解决方案。为了使其工作,您必须将superviews backgroundColor属性保留为nil witch是默认值。如果此UIView-subclass位于故事板中,请确保在属性检查器中将背景颜色设置为“清除颜色”。
- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
UIColor *blackBackgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
CGContextSetFillColorWithColor(ctx, blackBackgroundColor.CGColor);
CGContextFillRect(ctx, rect);
CGRect transparentPart = CGRectMake(10, 10, 120, 80);
CGContextClearRect(ctx, transparentPart);
}
答案 2 :(得分:0)
CALayer *layer = [[CALayer alloc] init];
[layer setFrame:yourBoundsInView];
[[yourView layer] setMask:layer];
或覆盖drawRect方法并在末尾添加以下代码行
UIBezierPath *seeThrough = [UIBezierPath bezierPathWithRect:seeThroughRect];
[[UIColor colorWithWhite:1 alpha:0] set];
[seeThrough fillWithBlendMode:kCGBlendModeSourceIn alpha:1];
答案 3 :(得分:0)