0

私のアプリでは、マスクを 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];


}

}

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 に答える