iOS:旋转图像,但不是遮罩。怎么做到这个?

时间:2014-03-02 18:21:13

标签: ios objective-c uiimageview rotation core-animation

我制作了两张图片:一张是我的微调器图像,另一张是蒙版图像(部分透明渐变)。想象一下:旋转器图像顺时针旋转,底部有深色渐变(看起来像雾霾),旋转旋转器部分隐藏此渐变。这是我的目标。

我在场景中添加了两个UIImageView,但我的蒙版图像也会影响背景颜色,我不希望这样。我希望我的蒙版图像只遮蔽微调器,所以我这样做:

- (void)viewDidLoad
{
   [super viewDidLoad];

   //add mask to UIImageView
   CALayer *mask = [CALayer layer];
   mask.contents = (id)[[UIImage imageNamed:@"mask.png"] CGImage];
   mask.frame = CGRectMake(0, 0, self.spinner.bounds.size.width,self.spinner.bounds.size.height);
   self.spinner.layer.mask = mask;
   self.spinner.layer.masksToBounds = YES;



   //rotate UIImageView (trouble with mask, it must not be rotated)
   CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
   animation.fromValue = [NSNumber numberWithFloat:0.0f];
   animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
   animation.duration = 20.0f;
   animation.repeatCount = INFINITY;
   [self.spinner.layer addAnimation:animation forKey:@"Spinner"];

}

结果我得到了一个漂亮的蒙版图像旋转器,但是我的蒙版旋转了我的旋转器,我想总是将我的蒙版剪辑到我的旋转器UIImageView的底部。我怎样才能做到这一点?或者我的观念是错误的,如果是的话,给我一些指示我如何存档我想要的东西。随意问。谢谢。

1 个答案:

答案 0 :(得分:2)

对我来说很棘手,但我做到了。

以下是您需要做的事情:您需要UIView(作为UIImageView的容器)。

在我发布的源代码中更改此部分:

CALayer *mask = [CALayer layer];
mask.contents = (id)[[UIImage imageNamed:@"mask.png"] CGImage];
mask.frame = self.yourContainerView.bounds;

self.yourContainerView.layer.mask = mask;
self.yourContainerView.layer.masksToBounds = YES;

这就是全部。希望这会对某人有所帮助。