【问题标题】:Animating UIView and Mask动画 UIView 和 Mask
【发布时间】:2015-01-17 02:40:04
【问题描述】:

我有一个 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 来实现这一点。

标签: ios objective-c iphone uiview uiimageview


【解决方案1】:

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

[superview bringSubviewToFront:maskView];

并为蒙版视图设置背景颜色和 alpha 属性,

maskView.backgroundColor = [UIColor blackColor];
maskView.alpha = 0.8;

现在您可以直接移动 2 个视图。

但更好的方法是将 2 个视图添加到其他视图 - 容器,然后旋转这一个视图。

【讨论】:

  • 感谢您的回答,但我会在游戏中看到黑屏。我不想要那个。在图像中,我在黑色图像上写了遮罩,这特别意味着在屏幕上看不到该部分。它只是为了隐藏它下面的东西。
  • 您是在建议我将视图颜色设置为清除吗?您是否知道,如果您将颜色设置为清除,它将显示其背后的内容。以上就是关于UIView清色的非常基础的知识了。
  • 您是否知道,如果您将背景设置为清除并在其上显示 UIImage,它将显示您的图像,没有矩形背景?
  • 但我不需要显示两个 UIImage。我只有 UIImage 是一个痣,在面具前消失并从面具中弹出。问题中图像中的黑色部分标记为掩码,即我们不希望它出现在屏幕上。我已找到解决方案的一半,完成后将在此处发布答案。不过感谢您的帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多