我已经设置了一个形状和图像,我想用它掩盖我的形状。我将他们的中心设置到画布的中心,然后我写道:
shape.mask = img;
但这给了我非常奇怪的结果。形状似乎被掩盖......有点......显示的唯一部分是右下角,左半部分和上半部分被切断。
我还尝试了两个图像,并有两个形状。似乎都没有用。
我错过了一步吗?也许我试图掩盖的图像没有任何alpha值(我猜这里,我看到它在另一个问题中提到他们必须是带有alpha值的图像,他们提到.png文件,所以这就是什么我用了)?
当我尝试使用两个形状时,我尝试将我想要遮罩的形状填充的alpha值设置为0.5和0.0,并且还将fillColor设置为Nil ......仍然没有。
我也(在绝望的最后一次尝试中)尝试了这里描述的方法:Mask a view in Objective-C但是我对Objective-c本身并不是很好,所以它也不起作用。
在C4中屏蔽的正确方法是什么?
答案 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