我已经设置了一个形状和一个图像,我想用它们来遮罩我的形状。我将它们的两个中心都设置在画布的中心,然后我写道:
shape.mask = img;但这给了我非常奇怪的结果。该形状似乎已被遮罩...有点..。唯一显示的部分是右下角,左半部分和上半部分被切断。
我还尝试了两个图像和两个形状。两种方法似乎都不管用。
我是不是漏掉了一步?也许我试图用来遮罩的图像没有任何Alpha值(我猜在这里,我在另一个问题中看到它必须是具有Alpha值的图像,并且他们提到了.png文件,所以这就是我使用的)?
当我尝试两个形状时,我尝试将我想要遮罩的形状的填充的Alpha值设置为0.5和0.0,并将fillColor设置为Nil…还是一无所获。
我也(在绝望的最后一次尝试中)尝试了这里描述的方法:Mask a view in Objective-C,但我不太擅长使用objective-c本身,所以这也不起作用。
在C4中掩码的正确方法是什么?
发布于 2013-02-01 02:49:07
你掩饰的方式是对的。
实际情况是,对象的蒙版必须基于对象本身的坐标空间进行定位。向对象添加子视图时,它相对于对象的{0,0}进行定位。
首先,遮罩形状定位在object的中心,而不是画布的中心:
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;
}
@endhttps://stackoverflow.com/questions/14623814
复制相似问题