Ios 为视图和遮罩设置动画

Ios 为视图和遮罩设置动画,ios,objective-c,iphone,uiview,uiimageview,Ios,Objective C,Iphone,Uiview,Uiimageview,我有一个基本上是摩尔的UIImageView。我要把这个鼹鼠从洞里钻出来。所以实际上我想的是,我将在洞下面的一些点上创建一个鼹鼠,在上面有一个遮罩,然后给图像视图设置动画,使它看起来像是从洞里弹出的。所以按照这个想法,我写下了这个代码: CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; CGRect maskRect = _moleIcon.frame; CGPathRef path = CGPathCreate

我有一个基本上是摩尔的UIImageView。我要把这个鼹鼠从洞里钻出来。所以实际上我想的是,我将在洞下面的一些点上创建一个鼹鼠,在上面有一个遮罩,然后给图像视图设置动画,使它看起来像是从洞里弹出的。所以按照这个想法,我写下了这个代码:

    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    CGRect maskRect = _moleIcon.frame;
    CGPathRef path = CGPathCreateWithRect(maskRect, NULL);
    maskLayer.path = path;
    CGPathRelease(path);
    _moleIcon.layer.mask = maskLayer;
    [UIView animateWithDuration:2.0 animations:^(void){
        _moleIcon.transform=CGAffineTransformMakeTranslation(0, 50);
    }];
但问题是,遮罩本身似乎正在随着实际的UIImageView移动。任何帮助都将不胜感激


尝试使用2个UIView,只需将maskView放在前面:

[superview bringSubviewToFront:maskView];
并设置遮罩视图的背景色和alpha属性

maskView.backgroundColor = [UIColor blackColor];
maskView.alpha = 0.8;
现在您可以直接移动2视图


但最好是将两个视图添加到另一个视图容器中,并旋转这一个视图。

为什么不只使用两个视图?一个装面具,一个装鼹鼠?你能详细解释一下吗?我不知道如何使用两个UIView来实现这一点。谢谢你的回答,但是我会在游戏中使用黑色视图。我不想那样。在图像中,我在黑色图像上写下了遮罩,这意味着屏幕上看不到该部分。它只是为了隐藏它下面的东西。你是建议我将视图颜色设置为“透明”吗?您是否意识到,如果您将颜色设置为“清除”,它将显示其背后的内容。这是关于UIView clear color的基本知识。您知道吗,如果您将背景设置为clear并在其上显示UIImage,它将显示图像,没有矩形背景?但我不需要显示两个UIImage。我只是想象一个鼹鼠在面具前消失,然后从面具中跳出来。问题中图像中的黑色部分被标记为“蒙版”,即我们不希望在屏幕上看到它。我已经找到解决方案一半了,完成后将在这里发布答案。谢谢你的帮助!:)