在我的应用中,我为UIImageView添加了一个遮罩,并将其设置为半透明度。此外,在该CALayer上运行CAAnimation。
现在,我想在它上面添加一个CATextLayer,它不能受到遮罩层的影响。我怎么能这样做?
由于
编辑:出现了一个新问题。不知何故,如果在animationDidStart中发送到CATextLayer的消息,动画将以相反的顺序执行。
- (void)viewDidLayoutSubviews {
for (int i=1; i<6; i++) {
NSString* intValue = [NSString stringWithFormat:@"%d", i];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];
animation.duration = 0.5;
animation.delegate = self;
animation.repeatCount = 0;
animation.autoreverses = NO;
[animation setValue:intValue forKey:@"animationString"];
animation.timingFunction = nil;
[animation setRemovedOnCompletion:NO];
[animation setFillMode:kCAFillModeForwards];
animation.fromValue = (id) [self getCGRectForZoomLevel:i];
animation.toValue = (id) [self getCGRectForZoomLevel:i + 1 ];
animation.beginTime = CACurrentMediaTime() + i * 2;
[self.shapeLayer addAnimation:animation forKey:intwaarde];
}
}
答案 0 :(得分:2)
您应该重新考虑您的层次结构。
将视图添加为容器以对图像视图和文本图层进行分组,使它们成为兄弟姐妹(与现在文本图层是图像视图的子图层时相比)
然后就像你现在一样掩盖图像视图。
Container // ⬅ this one is new
┃
┣━━ Image view ┅ (mask)
┃
┗━━ Text layer // ⬅ is now a sibling
答案 1 :(得分:0)
我终于找到了解决方案。因为我把动画放入了
- (void)viewDidLayoutSubviews