【问题标题】:Show delete button on wobbling image and delete that particular image在摆动的图像上显示删除按钮并删除该特定图像
【发布时间】:2012-11-27 09:27:02
【问题描述】:

我在滚动视图中添加了图像。在长按时,我为所有图像提供了摆动动画。 当我们卸载任何类似的应用程序时,我想在每个图像的右上角显示删除按钮,就像在 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");
}

这里没有调用选择器....我该如何解决这个..???

【问题讨论】:

  • 你能显示这个文件的标题吗?您是否在头文件中声明了 deleteImage 方法?
  • 当我向 imageview 添加动画并在 image view 中添加按钮时,它可能会禁用用户交互 stackoverflow.com/questions/12354919/…
  • 我想在删除图像按钮上添加操作.....但是'deleteImage'方法没有被调用......

标签: iphone xcode uiscrollview uianimation


【解决方案1】:

您最初可以在所有自定义视图中添加带有 TAG 值的删除按钮并将它们隐藏。现在在- (void)startWobble 方法中,您只需使用他们的标签就可以让他们取消隐藏。

我以这种方式在我的一个应用程序中完成了。希望这会对你有所帮助。

【讨论】:

  • 视图不是自定义的,我是动态添加的,用户可以动态添加或删除图像..
  • 是的,您编写的用于在 - (void)startWobble 中添加删除按钮的代码。您可以在动态创建这些视图的地方使用此代码。这就是我的意思..
  • 是的,我试过了,但它没有调用那个选择器,我认为这是因为 '[imgView addSubview:deleteImgButton];'我在图像视图中添加了它并为该图像视图设置动画。在动画期间它不调用任何选择器。我尝试在滚动视图中添加它,当时它工作正常:)
  • 您已将其添加到图像视图中??这就是为什么那不叫。你是对的。创建一个 View 添加 imageview 和该 view 的删除按钮。这样你就可以解决你的问题..
【解决方案2】:

简单.....

#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;
     }
}

thisQuestion得到它

【讨论】:

    【解决方案3】:

    从苹果文档中找到这句话并记住了你的问题:

    在动画期间,用户交互被暂时禁用 动画视图。 (在 iOS 5 之前,用户交互是 对整个应用程序禁用。)

    【讨论】:

      猜你喜欢
      • 2016-08-18
      • 1970-01-01
      • 2017-10-22
      • 2019-10-06
      • 2018-10-04
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多