【问题标题】:iOS: Aligning two UILabels (left/right) and connecting with dots?iOS:对齐两个 UILabel(左/右)并用点连接?
【发布时间】:2013-01-09 18:23:22
【问题描述】:

以上图片取自 Android 应用。我希望在 iOS 上做同样的事情。我知道如何使用点的背景图像来做到这一点,但看起来 Android 开发人员并没有使用点的图像。有谁知道这是怎么做到的?

【问题讨论】:

    标签: iphone ios objective-c ios6 uilabel


    【解决方案1】:

    我找到了解决内容拥抱/压缩阻力的方法。 这是界面构建器解决方案:

    左标签有一个短语和很多点,换行=截断尾巴。内容拥抱/压缩阻力完成其余工作。

    【讨论】:

      【解决方案2】:

      我认为您无需任何代码即可做到这一点。只需使用两个标签,它们的基线对齐,水平间距约束为 0。左侧标签的文本将左对齐,例如在字符串末尾添加 10 个点,并且换行模式设置为“剪辑”。右侧标签也将左对齐,因此其文本将始终与点对齐。

      编辑后:我无法让它在 IB 中工作。在使用约束的代码中可能是可能的,但我没有尝试过。看起来你应该可以用 3 个标签来做,两个外部的标签固定在视图的边缘,中间有一个灵活的标签,其文本是点。

      【讨论】:

      • 这是一个很好的解决方案,即使我认为这是一个。但是我没有想到“如果两个文本框的文本都太长并且会像崩溃一样在中心相遇怎么办”
      • @AnoopVaidya,是的,我想你可能是对的。我仍在尝试查看是否可以仅在 IB 中使用约束来处理不同长度的数字。
      • 谢谢大家!明天我会试一试,然后告诉你进展如何。
      • 所以,我最终使用了两个标签。使用 sizeWithFont 调整右标签的大小和位置,让左标签填充其余空间,同时剪切文本。工作得很好。谢谢大家!
      【解决方案3】:

      你可以使用NSAttributedString来格式化。

      在两个范围内使用两种颜色,第二部分甚至使用粗体。

      并计算总宽度(文本的长度)并在它们之间填充点 (.)。

      填充点的想法:

      假设您有 30 个字符的空间。

      str1 包含 10,str2 包含 6,然后在循环中使用 30-(10+6)

      for(30-(10+6) times) {
          [mainString appendString:@"."]
      }
      

      【讨论】:

      • 你将如何在两者之间“填充点”?
      • 假设您有 30 个字符的空间。 str1 包含 10,str2 包含 6,然后使用 30-(10+6) 并在循环中 for(14 次)[mainString appendString:@"."]
      • @AnoopVaidya 因为所有字母的宽度都是可变的(除非你使用等宽字母大声笑),这将不起作用,因为在最后一个 .和最后一句话。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 2013-07-02
      • 2019-07-14
      • 2018-03-09
      相关资源
      最近更新 更多