【问题标题】:Adding a UILabel on a UIImageView inside a for loop在 for 循环内的 UIImageView 上添加 UILabel
【发布时间】: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 上添加标签的最佳方法...子类化将是一种更简洁的方法。

标签: ios objective-c uiimageview uilabel


【解决方案1】:

视图的框架位于其父视图的坐标系中。所以每个图像视图的框架都在mainScroll的坐标系中。

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

UILabel  *lblName = [[UILabel alloc] initWithFrame:view_Image.bounds];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2021-10-28
    • 2016-01-30
    • 1970-01-01
    • 2014-12-12
    相关资源
    最近更新 更多