在掩码层之上询问CATextLayer

时间:2013-05-21 00:47:52

标签: ios core-animation calayer

在我的应用中,我为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];


}

}

2 个答案:

答案 0 :(得分:2)

您应该重新考虑您的层次结构。

将视图添加为容器以对图像视图和文本图层进行分组,使它们成为兄弟姐妹(与现在文本图层是图像视图的子图层时相比)

然后就像你现在一样掩盖图像视图。

Container   // ⬅ this one is new
   ┃
   ┣━━ Image view ┅ (mask)
   ┃
   ┗━━ Text layer // ⬅ is now a sibling

答案 1 :(得分:0)

我终于找到了解决方案。因为我把动画放入了     - (void)viewDidLayoutSubviews

一切都出错了。我把它放在那个方法中,因为它最初是来自github的其他人的项目。