UILabel - 在多个标签中显示数据

UILabel - Displaying data in Multiple Labels

您好,我有来自 JSON 的数据,我正在 UILabel 中显示它。但是,如果没有特定值的数据,UILabel 将保持为空并显示为白色 space.

我如何删除白色的 UILabel space 并使下面的 UILabel 取代第一个标签,依此类推.. 剩余的 UILabel。

CGRect secondFrame = secondLabel.frame;
secondLabel.hidden = YES;
thirdLabel.frame = secondFrame;

如果你有 4 个标签并且你想隐藏第二个标签,而在第二个标签的位置你想要第三个标签而不是像这样做。

如果您不想使用表格视图,您可以为每个标签设置两个属性,即顶部和高度约束,如果没有值,则将标签的常量设置为 0。不是最优雅的解决方案,但应该可行。有需要我可以举个例子,祝你好运

您可以在 运行 时间更改任何 UILabel 的位置。请记住,您的屏幕位于第四象限。 示例代码:

CGRect frame = labelName.frame;
frame.origin.y=10;//y value, horizondal
frame.origin.x= 12;//x value vertical
labelName.frame= frame;`

使用这个工具你也可以做同样的事情。

如果您不想使用 table 视图,那么您可以将所有标签放在一个视图中,并迭代视图子视图并将文本设置为 them.By,您的空标签将是最后一个那些。您可以稍微调整一下以满足您的要求。

-(void)addLableTextWith :(NSArray*)jsonList
 {
   NSArray * lblArray = [YourContainerView subviews];

   for (int i = 0; i <[jsonList count] ; i++)
    {
    UILabel * youurLbl = (UILabel*)lblArray[i];
    youurLbl.text = jsonList[i];
    }
 }

尝试设置约束并使用高度约束。设置此约束值 <= 标签高度。所以这个label是根据max到0之间的text设置的。

1.Set 所有标签的前导和尾随约束。

2.For 第一个标签设置顶部约束。

3.Set 值为 0 的其他标签的垂直间距。

注:

不要设置标签的高度。

第一个输出:

第二个输出:(我为第二个和第四个标签设置了空文本)

一个更简单的解决方案是使用单个标签,在本例中命名为 lblDetails 并像这样构建显示的文本

    var sDetails = ""

    // parse sLine1, sLine2, etc., from JSON

    // build up the string you need

    if sLine1 != ""
    {
        sDetails = sLine1
    }
    if sLine2 != ""
    {
        sDetails = sDetails + "\n" + sLine2
    }
    if sLine3 != ""
    {
        sDetails = sDetails + "\n" + sLine3
    }

    lblDetails.text = sDetails