从多个图像视图中识别特定的图像视图
Posted
技术标签:
【中文标题】从多个图像视图中识别特定的图像视图【英文标题】:Identify specific image view from multiple imageviews 【发布时间】:2011-05-02 06:18:34 【问题描述】:我有一个图像视图,我在上面设置了其他图像视图并将它们放在不同的位置。我想在法师视图上应用 FLIP ANIMATION。怎么办?当 if(i==1) 然后我的图像视图被翻转。 img1
是我的图像视图,我想识别它。我在`imagearr
我的代码:
-(void)setCards
int k=0;
CGFloat dx = self.view.frame.size.width/2;
CGFloat dy = self.view.frame.size.height/2;
int cnt = [imagearr count];
for (int j=1; j<3; j++) // Number of cards
for (int i=1; i<5; i++) // Number of players
int rnd = (arc4random() % cnt)-1;
UIImage *img = [imagearr objectAtIndex:rnd];
UIImageView *img1 = [[UIImageView alloc] initWithImage:img];
CGRect frame = img1.frame;
frame.size.width = frameX;
frame.size.height = frameY;
[img1 setFrame:frame];
[img1 setTag:k+i];
[UIView beginAnimations:@"Move" context:nil];
[UIView setAnimationDuration:0.50];
if (i==1)
[img1 setCenter:CGPointMake(dx+100, dy+(j*15))];
if (i==2)
[img1 setCenter:CGPointMake(dx+(j*15), dy+60)];
if (i==3)
[img1 setCenter:CGPointMake(dx-130, dy-(j*15))];
if (i==4)
[img1 setCenter:CGPointMake(dx-(j*20), dy-95)];
[self.view addSubview:img1];
[UIView commitAnimations];
[img1 release];
k=k+10;
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
UITouch *touch = [[event allTouches] anyObject];
int t = [touch view].tag;
我仍然无法识别特定的图像视图。请帮我解决这个问题。
【问题讨论】:
在这里重新提出相同的问题是不可接受的行为。如果您想引起注意您的问题,两天后您将被允许place a bounty on it。您也可以edit your question添加更多信息,这可能会使您的问题更容易理解和回答。 【参考方案1】:为单个 imageView 设置标签是最好的方法。使用标签,您甚至可以检测放置在 tableview 单元格内的多个图像,并设置操作以选择单个标签。
【讨论】:
【参考方案2】:我认为您应该看看 Apple 示例项目 GeekGameBoard。它实现了一个纸牌游戏,您将能够学习如何选择代表卡片的CALayer
s*、拖动它们并让它们相互交互。
*从性能的角度来看,这比使用视图更容易而且可能更好。
【讨论】:
【参考方案3】:为每个 UIImageView 实例关联一个唯一的标记值。
代码供参考。
myImageView1.tag = 1;
myImageView1.tag = 2;
myImageView1.tag = 3;
【讨论】:
【参考方案4】:Apple 链接代码: Detect imageview from multiple imageview
堆栈链接也是如此 Here is the discussion for to detect the images from the multiple images
祝你好运
【讨论】:
【参考方案5】:不同的imageView会有不同的图片,所以每个imageView会在不同的位置。
在您的触摸方法中,您是否必须检查触摸的边界,然后您必须匹配位于您的触摸区域下的哪个 imageView。据此,您可以继续您的功能。
【讨论】:
【参考方案6】:您可能可以在您的图像视图上放置一个不可见的 UI 按钮 并捕获触摸事件。效果是一样的,而且更干净、更简单。如果您需要更多信息,请告诉我。很乐意在这里编辑我的答案。
【讨论】:
感谢您的回复,但我想对 imageview 进行具体的说明,所以我想正确地做到这一点... 是的,你用一个不可见的按钮覆盖你的图像视图,你可以使用标签或编写特定的回调来获取触摸事件。我已经阅读了它及其强烈推荐的做法。将尝试在此处发布相关链接。【参考方案7】:你可以尝试类似的方法
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event //here enable the touch
// get touch event
UITouch *touch = [[event allTouches] anyObject];
int t = [touch view].tag;
UIImageView *imageView = (UIImageView *) [self.view viewWithTag:t];
//your logic here
【讨论】:
以上是关于从多个图像视图中识别特定的图像视图的主要内容,如果未能解决你的问题,请参考以下文章