繁体   English   中英

在iOS的不同位置的UICollectionView单元上添加标签

[英]Adding Label on UICollectionView Cell at different positions iOS

我正在使用一个iOS应用程序,在该应用程序中,我必须通过在每个图像上添加一个标签来在收藏夹视图中显示图像,就像在Facebook中一样,当我们单击Facebook中的收藏夹中的图像时,它将展开其图像并以标签。 不同的图像尺寸会出现不同的尺寸。 我也一样。 一切正常,但是当我添加小图像时,它会更改标签在单元格上的位置。这意味着在大图像上会出现两个标签,一个标签恰好在我想要的位置,第二个小图像标签在我想要的位置。 我正在使用此代码:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    int i;
    Cell *cell;
    UILabel * lblName ;
    UILabel * lblName1 ;
    cell=[collectionView dequeueReusableCellWithReuseIdentifier:REUSEABLE_CELL_IDENTITY forIndexPath:indexPath];
   @try
    {
    NSLog(@"index path is %ld",(long)indexPath.row);

        if(rearr.count == 0)
          {
            cell.imageviews.image=NULL;
          }

       else
           {
            NSLog(@"count %lu",(unsigned long)rearr.count);

        for (i=0;i<rearr.count; i++)
           {
                  NSLog(@"count %lu",(unsigned long)rearr.count);
                 image = [UIImage imageWithContentsOfFile:rearr[i]];
                  NSLog(@"image.size.width1 :  %f",image.size.width);
                  NSLog(@"image.size.height1 :  %f",image.size.height);

               if(image.size.width > image.size.height)
               {

                lblName = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 230.0, 300.0,80)];
                lblName.text = @"Image";
                lblName.textAlignment = NSTextAlignmentCenter;
                [lblName setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:10]];
                [lblName setTextColor:[UIColor colorWithRed:137.0f/255.0 green:137.0f/255.0 blue:137.0f/255.0 alpha:1.0]];
                [lblName setBackgroundColor:[UIColor whiteColor]];
               [cell.contentView addSubview:lblName];
               }
               else
               {

                lblName1 = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 410.0, 300.0,80)];
                lblName1.text = @"Image1";
                lblName1.textAlignment = NSTextAlignmentCenter;
                [lblName1 setFont:[UIFont fontWithName:@"GothamRounded-Bold" size:10]];
                [lblName1 setTextColor:[UIColor colorWithRed:137.0f/255.0 green:137.0f/255.0 blue:137.0f/255.0 alpha:1.0]];
                [lblName1 setBackgroundColor:[UIColor whiteColor]];
                [cell.contentView addSubview:lblName1];

               }

             if(image != nil)
                {
                 [itms addObject:image];
                }
             else
            {
            NSData  *data = [[NSData alloc]initWithContentsOfFile:rearr[i]];
            image=[UIImage imageWithData:data];
            [itms addObject:image];
            }
         }

        cell.imageviews.image=[itms objectAtIndex:indexPath.row];
        cell.imageviews.layer.cornerRadius=5.0f;
        cell.imageviews.clipsToBounds = YES;
    }


    return cell;
    }
    @catch (NSException *exception)
    {

        NSLog(@"image insertion in collecvcontroller :  exception %@",exception);
        return cell;

    }


}

请帮帮我。 我不知道我在做什么错。

当您使用dequeueReusableCellWithReuseIdentifier为什么每次都要添加UILabel 执行以下操作,您将看到期望的输出。

if(image.size.width > image.size.height)
{
    [[[cell contentView] viewWithTag:2] removeFromSuperView];
    lblName = [[cell contentView] viewWithTag:1];
    if(! lblName) 
    {
        lblName = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 410.0, 300.0,80)];
        [lblName setTag:1];
        [[cell contentView] addSubview:lblName];
    }
    // Do other stuff here
}
else
{
    [[[cell contentView] viewWithTag:1] removeFromSuperView];
    lblName1 = [[cell contentView] viewWithTag:2];
    if(! lblName1) 
    {
        lblName1 = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 410.0, 300.0,80)];
        [lblName1 setTag:2];
        [[cell contentView] addSubview:lblName1];
    }
    // Do other stuff here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM