在 for 循环内的 UIImageView 上添加 UILabel
Posted
技术标签:
【中文标题】在 for 循环内的 UIImageView 上添加 UILabel【英文标题】:Adding a UILabel on a UIImageView inside a for loop 【发布时间】:2016-02-16 19:23:50 【问题描述】: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 上。提前致谢。
【问题讨论】:
我认为这不是在每个UIImageView
上添加标签的最佳方法...子类化将是一种更简洁的方法。
【参考方案1】:
视图的框架位于其父视图的坐标系中。所以每个图像视图的框架都在mainScroll
的坐标系中。
由于您的每个标签都是单独图像视图的子视图,因此每个标签的框架都位于其父图像视图的坐标系中。但是您的行为好像标签的框架位于mainScroll
的坐标中。
UILabel *lblName = [[UILabel alloc] initWithFrame:view_Image.bounds];
【讨论】:
以上是关于在 for 循环内的 UIImageView 上添加 UILabel的主要内容,如果未能解决你的问题,请参考以下文章
XCODE Objc 以编程方式在 for 中添加 UiimageView