4

スクロールビューで画像を追加しました。長押しすると、すべての画像にぐらつきアニメーションが表示されます。そのようなアプリケーションをアンインストールするときに、iPhoneのようにすべての画像の右上隅に削除ボタンを表示したいと思います。

- (void)startWobble {
for (UIView *imgView in viewsInScrollView) {
    UIButton *deleteImgButton = [[UIButton alloc] initWithFrame:CGRectMake(55,-7,12,12)];        
    [deleteImgButton setImage:[UIImage imageNamed:@"close_icon.png"] forState:UIControlStateNormal];
    [deleteImgButton addTarget:self action:@selector(deleteImage:) forControlEvents:UIControlEventTouchUpInside];
    [imgView addSubview:deleteImgButton];


    imgView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-5));        
    [UIView animateWithDuration:0.20
                          delay:0.0
                        options:(UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionRepeat | UIViewAnimationOptionAutoreverse)
                     animations:^ {
                         imgView.transform = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(5));
                     }
                     completion:NULL
     ];
}
}
-(void)deleteImage : (id)sender {
     NSLog(@"Delete Image");
}

ここではセレクターが呼び出されていません....どうすればこれを解決できますか..???

4

3 に答える 3

1

最初にすべてのカスタム ビューに TAG 値を持つ削除ボタンを追加し、それらを非表示にすることができます。- (void)startWobbleメソッドでは、タグを使用するだけでそれらを再表示させることができます。

私は自分のアプリケーションの 1 つをこの方法で実行しました。これがあなたを助けることを願っています。

于 2012-11-27T10:32:58.860 に答える
1

単純.....

#define RADIANS(degrees) ((degrees * M_PI) / 180.0)

CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-5.0));
CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(5.0));

itemView.transform = leftWobble;  // starting point

[UIView beginAnimations:@"wobble" context:itemView];
[UIView setAnimationRepeatAutoreverses:YES]; // important
[UIView setAnimationRepeatCount:10];
[UIView setAnimationDuration:0.25];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(wobbleEnded:finished:context:)];

itemView.transform = rightWobble; // end here & auto-reverse

[UIView commitAnimations];

...

- (void) wobbleEnded:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context 
{
     if ([finished boolValue]) {
        UIView* item = (UIView *)context;
        item.transform = CGAffineTransformIdentity;
     }
}

この質問から得ました

于 2013-03-04T14:02:01.767 に答える
0

アップルドキュメントからこの引用を見つけて、あなたの質問を思い出しました:

アニメーション中、アニメーション化されているビューのユーザーインタラクションは一時的に無効になります。(iOS 5より前は、アプリケーション全体でユーザー操作が無効になっています。)

于 2012-11-27T12:03:25.043 に答える