0

在我的应用程序中,我为 UIImageView 添加了一个蒙版,并将其设置为半透明度。此外,还有一个 CAAnimation 在该 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];


}

}

4

2 回答 2

2

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

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

然后就像你已经在做的那样屏蔽图像视图。

Container   // ⬅ this one is new
   ┃
   ┣━━ Image view ┅ (mask)
   ┃
   ┗━━ Text layer // ⬅ is now a sibling
于 2013-05-21T07:42:01.930 回答
0

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

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

于 2013-05-21T13:10:28.500 回答