iphone - 通过循环将 TouchUpInside 事件分配给多个 UIImageView,并使用可以进一步对每个 UIImageView 进行动画/操作的处理程序方法

标签 iphone objective-c ios cocoa-touch uiimageview

我循环遍历了 NSDictionary 对象的 NSArray,其中包含要显示的多个图像的数据。然后,该数据被转换为 UIImageView 对象,并作为 subview 添加到当前 View 。够简单的!通过数组/字典传入的所有图像都会根据需要显示在屏幕上,到目前为止效果很好:

for (NSDictionary *caseData in caseImages) { // caseImages is the array
    UIImage *caseImage = [UIImage imageNamed:[caseData objectForKey:@"image_file"]];
    UIImageView *caseView = [[UIImageView alloc] initWithImage:caseImage];
    caseView.frame = CGRectMake([[caseData objectForKey:@"position_x"] intValue], [[caseData objectForKey:@"position_y"] intValue], [[caseData objectForKey:@"size_w"] intValue], [[caseData objectForKey:@"size_h"] intValue]);
    [self.view addSubview:caseView ];
}

但是,现在我需要更进一步,并实现一个 touchUpInside 事件处理程序,如果可能的话,可以将其附加到每个 UIImageView 对象,以便处理程序方法可以进一步对每个 UIImageView 进行动画/操作,理想情况下,将触摸的图像居中并放大,然后将其余图像淡出。

我陷入困境的是如何成功添加触摸事件,能够引用案例触摸的图像,以及其余未触摸的图像(如果可能),然后对每个事件应用适当的过渡动画分别为图像。

我已经看到了与下面的代码片段类似的示例,但我无法让它工作:

[caseView addTarget:self action:@selector(spotlightCase) forControlEvents:UIControlEventTouchUpInside];

尽管如此,如果我真的让它工作起来,我仍然对如何成功引用从循环创建的每个 UIImageView 感到有点茫然,因此每个图像都可以根据以下内容进行正确的动画/操作确实有人被感动了。我是否需要在 View Controller 中添加一个新的数组属性来保存添加到 View 中的每个 UIImageView 对象的指针?难道这一切都不能用 UIImageViews 来实现吗?我看到有人提到使用自定义 UIButton 对象,但我认为这可能同样复杂/不可能,因为我还需要对图像的大小和位置进行动画处理。

您是否有机会就如何实现上述所有棘手的工作提供一些见解?

谢谢!

最佳答案

实现此目的的一种方法是为每个图像添加一个 UIButton 到 View Controller 的 View ,并将 backgroundImage 属性设置为循环内的 [UIImage imageNamed:]。您可以将通用选择器设置为每个按钮的目标,就像第二个代码片段中一样。我之前使用过类似的技巧,并设置按钮的 tag 属性来标识按下的按钮的索引。如果您还在 @selector(spotlightCase:) 末尾添加冒号,您的方法还将传递调用它的对象的 id。您的方法定义将是:

- (void) spotlightCase:(id) sender;

您可以在此处使用 sender.tag 来控制您的逻辑。

希望对你有帮助

戴夫

关于iphone - 通过循环将 TouchUpInside 事件分配给多个 UIImageView,并使用可以进一步对每个 UIImageView 进行动画/操作的处理程序方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6986283/

相关文章:

ios - 带悬垂的 UINavigationBar 自定义背景(iOS 5)

iphone - 对 NSString 进行排序

iphone - 同步服务和 iOS

iphone - 如何在单行中管理多个标签但没有。表格 View 中的单元格取决于 iPhone SDK 中的数组。

iphone - iPhone 是否支持 WiFi ad-hoc 模式?

ios - 为什么第一次弹出窗口要花很多时间?

objective-c - 只返回 ClassName 的说明?

iphone - 有没有办法限制仅将电子邮件发送到预定义的目的地?

ios - 什么时候创建 Storyboard中的元素?

ios - 检测 UITextField 何时更改而不使用键盘快速