0

私のアプリには、UIImageViewが大きくなり、実際には2つのアニメーションが縮小されるアニメーションがあります。アプリ全体を通して、これはいくつかの異なるUIImageViewで発生する可能性があります。私は本当にうまくいったこれを行う方法を見つけましたが、現在はAutomatic Reference Countingと互換性がないようです。ここに私のコードは次のとおりです。ARVIEW内の複数のUIImageViewsのUIViewアニメーション

[UIView beginAnimations:@"growImage" context:imageName]; 
[UIView setAnimationDuration:0.5f]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationDelegate:self]; 
imageName.transform = CGAffineTransformMakeScale(1.2, 1.2); 
[UIView commitAnimations]; 

、その後:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(UIImageView *)context { 
    if (animationID == @"growImage") { 
    [UIView beginAnimations:@"shrinkImage" context:context]; 
    [UIView setAnimationDuration:0.5f]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
    [UIView setAnimationDelegate:self]; 
    context.transform = CGAffineTransformMakeScale(0.01, 0.01); 
    [UIView commitAnimations]; 
    } 
} 

これは完全に働いたと私はARCに私のプロジェクトを変換しようとするまで、私は、とても満足でした。

[UIView beginAnimations:@"growImage" context:imageName]; 
[UIView beginAnimations:@"shrinkImage" context:context]; 

ん:私は今、私はアニメーションのためのコンテキストとしてUIImageViewを渡すためにしようとするこれらの行に「『無効*』へのObjective-Cのポインタの暗黙的な変換ARCで許可されていない」エラーが出ます誰かが、アニメーションビューの「animationDidStop」関数を警告することができる別の方法を知っている人は、ARCに準拠したUIImageViewを動作させたいのですか?

ありがとうございます!

答えて

1

次のようにあなたが行うことができます。UIImageViewの値を渡す程度

[UIView beginAnimations:@"growImage" 
       context:(__bridge void*)imageName]; 
imageName.transform = ... 
[UIView commitAnimations]; 
+0

ありがとう多く! – RanLearns

+0

警告:まっすぐな '__bridge'は、' imageName'への強い参照がすでにアニメーションの完成を引き継いでいる場合にのみ有効です。さもなければ、ARCはハンドラが呼び出される前にそれを取り除きます。それがあなたに当てはまる場合は、より良い答えをご覧ください:http://stackoverflow.com/questions/12809107/passing-objects-safely-as-opaque-context-params-under-arc –

2

はるかに簡単なブロックベースのアニメーションを使用していない理由は何ですか?

[UIView animateWithDuration:0.5 animation:^{ 
    imageName.transform = CGAffineTransformMakeScale(1.2, 1.2); 
} completion ^(BOOL finished) { 
    [UIView animateWithDuration:0.5 animation:^{ 
     imageName.transform = CGAffineTransformMakeScale(0.01, 0.01); 
    }]; 
}]; 
+0

一つの良いところは、私はすべてのアニメーションに同じ完了ブロックを配置する必要がないことです。私はアプリ全体を通して何十枚もの画像でこの縮小アニメを行います。私の大きな問題は、これらのブロックベースのアニメーションはiOS4でしか利用できないと考えており、OS上のiPadsを使用しているユーザーにアプリをまだターゲット設定したいと思うことです。 – RanLearns

+0

正しくリコールすれば、ARCは3.2で利用できません – kervich

関連する問題