Ios 询问遮罩层顶部的CATextLayer

Ios 询问遮罩层顶部的CATextLayer,ios,core-animation,calayer,Ios,Core Animation,Calayer,在我的应用程序中,我为UIImageView添加了一个遮罩,并将其设置为不透明度的一半。此外,还有一个计算机运行在该CALayer上 现在,我想在上面添加一个CATextLayer,它不能受遮罩层的影响。我该怎么做 谢谢 编辑:出现了一个新问题。不知何故,如果在animationDidStart中发送给CATextLayer的消息,动画将以相反的顺序执行 - (void)viewDidLayoutSubviews { for (int i=1; i<6; i++) { NSStr

在我的应用程序中,我为UIImageView添加了一个遮罩,并将其设置为不透明度的一半。此外,还有一个计算机运行在该CALayer上

现在,我想在上面添加一个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];


}
-(void)ViewDidLayoutSubView{

对于(inti=1;i,您应该重新考虑您的层次结构

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

然后像已经做的那样屏蔽图像视图

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

我终于找到了解决办法。因为我把动画放进去了
-(无效)viewDidLayoutSubviews


一切都出了问题。我之所以使用这种方法,是因为它最初是github的其他项目。

@Rönnqvist谢谢David!但是,我想在动画即将开始时更新此文本层,如:'-(void)animationDidStart:(CAAnimation*)动画{self.textLayer.string=[动画值forkey:@“animationString”];}'是什么将动画添加到层中?您仍然可以成为动画的代理,并使用
animationDidStart:
对其作出反应。问题是您应该在哪里作为代理,这正是我所做的,并且确实调用了animationDidStart。但是,在-(void)中调用self.textLayeranimationDidStart以某种方式取消即将开始的动画。self.textLayer不是播放动画的层。它有点复杂。创建动画时,我使用:
[animation setValue:textString forKey:@“animationString”]然后,在animationDidStart中:我尝试通过
self.textLayer.string=[theAnimation valueForKey:@“animationString]”检索animationString值。
无论如何,这不起作用,应该与层次结构无关。它如何失败?它是否被调用?动画是否为nil?值是否为nil?