使UIView的一部分变得透明

时间:2012-02-27 09:21:09

标签: iphone objective-c ios uiview

我有一个UIView w / c我在viewForHeaderInSection中作为视图返回。现在,我想在视图的右下方制作一个小透明方块,以便透视细胞。我怎样才能实现这样的目标?我需要使用这个CGContextSetBlendMode吗?任何人都可以阐明这一点。

4 个答案:

答案 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)