屏蔽如何在C4中工作?

时间:2013-01-31 10:41:41

标签: c4

我已经设置了一个形状和图像,我想用它掩盖我的形状。我将他们的中心设置到画布的中心,然后我写道:

shape.mask = img;

但这给了我非常奇怪的结果。形状似乎被掩盖......有点......显示的唯一部分是右下角,左半部分和上半部分被切断。

我还尝试了两个图像,并有两个形状。似乎都没有用。
我错过了一步吗?也许我试图掩盖的图像没有任何alpha值(我猜这里,我看到它在另一个问题中提到他们必须是带有alpha值的图像,他们提到.png文件,所以这就是什么我用了)?

当我尝试使用两个形状时,我尝试将我想要遮罩的形状填充的alpha值设置为0.5和0.0,并且还将fillColor设置为Nil ......仍然没有。

我也(在绝望的最后一次尝试中)尝试了这里描述的方法:Mask a view in Objective-C但是我对Objective-c本身并不是很好,所以它也不起作用。

在C4中屏蔽的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

你正在掩饰正确的方式。

正在进行的是必须根据对象本身的坐标空间定位对象的蒙版。将子视图添加到对象时,它将相对于对象的{0,0}。

进行定位

以下代码将起作用并向您展示两件事。

首先,遮罩形状位于对象的中心,而不是画布的中心:

s.center = CGPointMake(m.width/2,m.height/2);

其次,当您触摸画布时,动画将触发蒙版移动到画布的“中心”坐标,但您会注意到它进一步关闭。这是因为它从图像的原点开始计算其位置。

@implementation C4WorkSpace {
    C4Image *m;
    C4Shape *s;
}

-(void)setup {
    m = [C4Image imageNamed:@"C4Sky"];
    s = [C4Shape ellipse:CGRectMake(0, 0, m.height, m.height)];

    m.center = self.canvas.center;
    s.center = CGPointMake(m.width/2,m.height/2);
    m.mask = s;
    [self.canvas addImage:m];
}

-(void)touchesBegan {
    s.animationDuration = 1.0f;
    s.center = self.canvas.center;
}

@end