我制作了两张图片:一张是我的微调器图像,另一张是蒙版图像(部分透明渐变)。想象一下:旋转器图像顺时针旋转,底部有深色渐变(看起来像雾霾),旋转旋转器部分隐藏此渐变。这是我的目标。
我在场景中添加了两个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的底部。我怎样才能做到这一点?或者我的观念是错误的,如果是的话,给我一些指示我如何存档我想要的东西。随意问。谢谢。
答案 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;
这就是全部。希望这会对某人有所帮助。