从多个图像视图中识别特定图像视图

时间:2011-05-02 06:18:34

标签: objective-c cocoa-touch ios uiimageview

我有一个图像视图,我在其上设置了其他图像视图并将它们放在不同的位置。我想在法师视图上应用FLIP ANIMATION。怎么办?当if(i == 1)时,我的imageview被翻转。 img1是我的图片视图,我想识别它。我在`imagearr

中分配了52张图片

我的代码:

-(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;


}

我仍然无法识别特定的imageview。请帮我解决这个问题。

7 个答案:

答案 0 :(得分:2)

为单个imageView设置标记是最好的方法。使用标签,您甚至可以检测放置在tableview单元格内的多个图像,并设置操作以选择单个标签。

答案 1 :(得分:0)

将唯一标记值与每个 UIImageView 实例相关联。

代码供参考。

myImageView1.tag = 1;
myImageView1.tag = 2;
myImageView1.tag = 3;

答案 2 :(得分:0)

答案 3 :(得分:0)

不同的imageView中会有不同的图像,因此每个imageView将位于不同的位置。

在你的触摸方法中,你必须检查触摸的界限,然后你必须匹配你的触摸区域下的imageView。根据你可以继续你的功能。

答案 4 :(得分:0)

您可以在图像视图上放置不可见的UI按钮并捕获触摸事件。效果相同,更清洁,更简单。如果您需要更多信息,请告诉我。很乐意在这里编辑我的答案。

答案 5 :(得分:0)

你可以尝试类似的东西

-(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
}

答案 6 :(得分:0)

我认为您应该看看Apple示例项目GeekGameBoard。它实现了纸牌游戏,您将能够学习如何选择代表卡片的CALayer s *,将它们拖动,并让它们相互交互。


*从性能角度来看,这比使用视图更容易,也可能更好。