关于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上。提前谢谢。
答案 0 :(得分:1)
视图的框架位于其超视图的坐标系中。因此,每个图像视图的框架都在mainScroll
的坐标系中。
由于每个标签都是单独图像视图的子视图,因此每个标签的框架都位于其父图像视图的坐标系中。但您的行为似乎标签的框架位于mainScroll
。
UILabel *lblName = [[UILabel alloc] initWithFrame:view_Image.bounds];