【问题标题】:How to create a limit for the UILabel in swift如何在 swift 中为 UILabel 创建一个限制
【发布时间】:2017-03-22 06:45:52
【问题描述】:

我想用代码解释我的问题。首先您可以在下面看到自定义标签代码;

let resultLabel : UILabel = {
    let lbl = UILabel()
    lbl.textColor = .white
    lbl.textAlignment = .right
    lbl.text = "0"
    lbl.font = UIFont(name: "Helvetica Neue", size: 35)
    lbl.minimumScaleFactor = 0.75
    lbl.lineBreakMode = .byClipping
    lbl.adjustsFontSizeToFitWidth = true
    return lbl           
}()

我刚刚用这些代码行创建了标签。我还根据视图的框架高度大小和左右填充给它们特定的高度,您将在下面看到约束代码。

resultLabel.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: view.frame.size.height / 7, paddingLeft: 2, paddingBottom: 0, paddingRight: 5, width: 0, height: view.frame.size.height / 7)

我将根据单击按钮将值分配给 UILabel,因此我想为 UILabel 设置字符限制。根据我编写的代码,它按照我的意愿裁剪数据,但它没有在值中执行相同的操作。你怎么能帮助我呢?谢谢。

【问题讨论】:

  • it cropped data as i wanted but it didn't do that same action in the value. - 你能解释一下吗?
  • 当然,让我解释一下。由于限制,我在屏幕上看到了 12345,但是当我检查值时,我可以看到 1234567(最后 2 位我点击了更多测试它不会显示在屏幕上,但我会添加我需要裁剪的值在屏幕值)

标签: ios iphone swift uilabel


【解决方案1】:

你想要的东西是不可能开箱即用的,在我看来这真的很奇怪。现在数据和它的表示是分开的,它们应该是分开的。想象一下,如果您的视图控制器大小发生变化(设备旋转,或者您的应用程序在 iPad 上以拆分模式运行,并且用户调整了应用程序的大小) - 那么您将能够看到更多数据。因为标签保留了原始数据,所以一切都会自动发生。如果它裁剪数据以匹配其呈现的表示,您将需要对所有此类更改做出反应并将原始数据重新分配给标签。

提供一个真实世界的示例 - 假设您正在通过一个小的(让大小,信纸大小)窗口看着一个巨大的(建筑物大小)广告牌。你只能看到广告牌的一部分,但一切都还在。同样,UILabel 只是所提供数据的“窗口”。

现在,实现这一点并非易事。这样的UIQuantumLabel* 需要考虑当前字体在当前大小的数据中每个字母/数字/表情符号/字符的宽度(除非您将其限制为等宽字体),考虑是否自动字体缩放已经发生,大小,用户是否在设备可访问性设置中减小/增加了字体大小,可能还有其他一些因素。

您对此有何用例?为什么要裁剪数据而不保留原始数据?


*UIQuantumLabel 因为它让我想起了量子力学(至少我记得它),观察一个物体会改变它的状态:)

【讨论】:

  • 好吧,让我解释一下类似的事情,如果你检查 iphone 7 中的 ios 计算器它需要 9 位数字,我不能在屏幕上写更多也值,因为当我想乘以它时'会忽略掉屏幕数据。你能接近这个样子吗?
  • 嗯,很容易限制你可以使用某种键盘输入UILabel/UITextField/UITextView中的字符数,并且一个一个地工作,还有很多关于如何做的教程 - like this one。现在,如果您想将 UILabel 限制为例如 5 个字符,则应首先相应地准备数据。 UILabel(或任何其他视图)应该尽可能地愚蠢。您的所有逻辑都应该发生在其他地方,结果会简单地呈现在屏幕上。
  • 实际上我的 uilabel 根据按钮标签获得价值,就像在计算器中我没有使用键盘或类似的东西。因此,根据设备屏幕,标签宽度当然会扩展,但据此我需要将数据保存在帧值和可视化中..
  • 好吧,为您指明正确的方向 - 您应该在添加下一个数字之前检查您的字符串 length。如果它比你的最大可能长度短,你可以追加。
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多