OStack程序员社区-中国程序员成长平台

标题: iphone - 获取图像索引 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 10:57
标题: iphone - 获取图像索引

我正在开发一个应用程序,其中我有 15 个图像存储在一个数组中作为正面图像,另外 15 个图像作为背面图像。我想将该图像垂直添加到 ScrollView 中,我已经成功完成了,但现在我的问题是如何比较这两个数组图像。

在垂直 ScrollView 上添加正面图像已成功添加但不是随机打乱,即当我双击正面图像时,会显示背面阵列图像,但该 ImageView 中仍存在正面图像。

请帮我解决这个问题。

提前致谢。

请检查我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];


    AppDelegate * delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];

    delegate.front=TRUE;
    delegate.back=FALSE;


    UIScrollView *scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];

    [scrollView setPagingEnabled:YES];

    [scrollView setShowsHorizontalScrollIndicator:NO];

    FrontsCards=[[NSMutableArray alloc]initWithObjects"cloub1.png",@"cloub2.png",@"cloub3.png",@"cloub4.png",@"cloub5.png",@"cloub6.png",@"cloub7.png",@"cloub8.png",@"cloub9.png",@"cloub10.png",@"cloub11.png",@"cloub12.png",@"diamond1.png",@"diamond2.png",@"diamond3.png",@"diamond4.png",@"diamond5.png", nil];

    for(int m=0; m<[FrontsCards count];m++)
      {
        ImgView.tag=m;

        int randIdx=arc4random()%[FrontsCards count];


        NSString *imageName=[FrontsCards objectAtIndex:randIdx];

    //  NSLog(@"%d",randIdx);


        NSString *fullImageName=[NSString stringWithFormat"%@",imageName];

        int padding=25;
        // padding is given.

        CGRect imageViewFrame=CGRectMake(scrollView.frame.size.width*m+padding, scrollView.frame.origin.y, scrollView.frame.size.width-2*padding, scrollView.frame.size.height);

        ImgView=[[UIImageView alloc]initWithFrame:imageViewFrame];

        [ImgView setImage:[UIImage imageNamed:fullImageName]];

        [ImgView setContentMode:UIViewContentModeScaleAspectFill];


        [scrollView addSubview:ImgView];


        UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self actionselector(doubleTapImgView];
        doubleTap.numberOfTapsRequired = 2;
        doubleTap.delegate = self;

        [self.ImgView addGestureRecognizer:doubleTap];

        self.ImgView.userInteractionEnabled=YES;


    }

    CGSize scrollViewSize=CGSizeMake(scrollView.frame.size.width*[FrontsCards count], scrollView.frame.size.height);
    [scrollView setContentSize:scrollViewSize];
    [self.view addSubview:scrollView];




}


- (void)doubleTapImgViewUITapGestureRecognizer *)gesture
{


    AppDelegate * delegate=(AppDelegate *)[[UIApplication sharedApplication]delegate];

    delegate.back=TRUE;

    delegate.front=FALSE;


    NSLog(@"%d", gesture.view.tag);

        NSLog(@"double-tap");

    BackCards =[[NSMutableArray alloc]initWithObjects"card1.jpg",@"card2.jpg",@"card3.jpg",@"card4.jpg", nil];

    UIScrollView *scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];

    [scrollView setPagingEnabled:YES];

    [scrollView setShowsHorizontalScrollIndicator:NO];

    for(int m=0; m< [BackCards count];m++)
    {       
        NSString *imageName=[BackCards objectAtIndex:m];

        NSString *fullImageName=[NSString stringWithFormat"%@",imageName];

        int padding=25;
        // padding is given.

        CGRect imageViewFrame=CGRectMake(scrollView.frame.size.width*m+padding, scrollView.frame.origin.y, scrollView.frame.size.width-2*padding, scrollView.frame.size.height);

        ImgView=[[UIImageView alloc]initWithFrame:imageViewFrame];

        [ImgView setImage:[UIImage imageNamed:fullImageName]];

        [ImgView setContentMode:UIViewContentModeScaleAspectFill];


        [scrollView addSubview:ImgView];


        UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self actionselector(doubleTapImgView];
        doubleTap.numberOfTapsRequired = 2;
        doubleTap.delegate = self;

        [self.ImgView addGestureRecognizer:doubleTap];

        self.ImgView.userInteractionEnabled=YES;


    }

    CGSize scrollViewSize=CGSizeMake(scrollView.frame.size.width*[FrontsCards count], scrollView.frame.size.height);
    [scrollView setContentSize:scrollViewSize];
    [self.view addSubview:scrollView];

}



Best Answer-推荐答案


为了实现这一点,您可以为每个图像设置 Tag 值,当您点击该特定图像时,您将获得标签值并使用该 tag 值。

self.imagview.tag=Unique_tagValue;

单击该图像时,您可以从另一个阵列设置图像。

self.imageview.image=[UIImage imageNamed:[backArray objectAtIndex:self.imageview.tag]];

编辑:-

viewDidLoad 方法中为 imageview 设置标签,像这样 ImgView.tag=m+100;

doubleTapImgView方法中保留以下代码

 for(int m=0; m< [BackCards count];m++)
    { 
      UIImageView *imgview=(UIImageView *)[scrollview viewWithTag:m+100];
      imgview.image=[UIImage imagNamed:[BackCards objectAtIndex:m]];
    }

subview 翻译:-

 [self.view bringSubviewToFront:frontview];

关于iphone - 获取图像索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16557466/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4