在for循环内的UIImageView上添加UILabel

时间:2016-02-16 19:23:50

标签: ios objective-c uiimageview uilabel

关于SO和网上的所有类似问题都是关于在UIImageView上放置UILabel,这是我熟悉的,但是我必须在多个UIImageView上放置多个UILabel。每个UIImageView上都有一个。我有一个像这样的for循环:

    for(int i=0;i < [arrURL count] ;i++)
    {
        UIImageView *view_Image = [[UIImageView alloc]initWithFrame:CGRectMake(x, y, 400, 180)];
        y = y + 182;

        view_Image.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:arrURL[i]]]];


        UILabel  *lblName = [[UILabel alloc] initWithFrame:CGRectMake(view_Image.frame.origin.x, view_Image.frame.origin.y, view_Image.frame.size.width, view_Image.frame.size.height)];

        [lblName setText:arrNames[i]];
        [view_Image addSubview:lblName];
        [mainScroll addSubview:view_Image];
    }

当我运行代码时,UILabel只出现在第一个UIImageView上,其余的UIImageView出现在UILabel的顶部。 (我通过向UILabel添加背景颜色找到了这个)。如何让UILabel出现在UIImageView上。提前谢谢。

1 个答案:

答案 0 :(得分:1)

视图的框架位于其超视图的坐标系中。因此,每个图像视图的框架都在mainScroll的坐标系中。

由于每个标签都是单独图像视图的子视图,因此每个标签的框架都位于其父图像视图的坐标系中。但您的行为似乎标签的框架位于mainScroll

的坐标中
UILabel  *lblName = [[UILabel alloc] initWithFrame:view_Image.bounds];