Ios 如何在swift中为UILabel创建限制

Ios 如何在swift中为UILabel创建限制,ios,iphone,swift,uilabel,Ios,Iphone,Swift,Uilabel,我想用代码来解释我的问题。首先,您可以在下面的中看到自定义标签代码 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 =

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

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设置字符限制。根据我编写的代码,它按照我的要求裁剪了数据,但在值中没有执行相同的操作。你能帮我解决吗?谢谢。

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

提供一个真实世界的例子——想象你正在通过一个小窗口(lets大小,信纸大小)看一个巨大的(建筑物大小)广告牌。你只能看到广告牌的一部分,但一切都还在那里。同样地,
UILabel
只是查看所提供数据的“窗口”

现在,实现这一点不会是微不足道的。这样的
UIQuantumLabel
*需要考虑当前字体数据中每个字母/数字/表情符号/字符在其当前大小下的宽度(除非您将其限制为单间距字体),考虑是否发生了自动字体缩放以及缩放的大小,用户是否在设备辅助功能设置中减小/增大了字体大小,可能还有其他一些因素

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



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

它根据我的需要裁剪数据,但它在值中没有做同样的动作。
-你能解释更多吗?当然,让我解释一下。由于限制,我在屏幕上看到12345,但当我检查到值时,我可以看到1234567(最后两位数字我点击的次数越多,测试结果不会显示在屏幕上,但我会添加需要裁剪的值,就像屏幕值一样)。好的,让我解释一下这样的情况,如果你在iPhone7中查看ios计算器,它需要9位数字,我不能在屏幕上写更多的值,因为当我想乘一些东西时,它会忽略屏幕外的数据。你可以这样看吗?嗯,很容易限制你可以使用某种键盘输入
UILabel/UITextField/UITextView
的字符数,并且一个接一个地操作,关于如何操作有很多教程。现在,如果您想将
UILabel
限制在5个字符以内,您应该首先相应地准备数据。
ui标签
(或任何其他视图)应尽可能静音。所有的逻辑都应该发生在其他地方,结果会简单地显示在屏幕上。实际上,我的uilabel根据按钮标签获取值,就像在计算器中一样,我没有使用键盘或类似的东西。因此,根据设备屏幕,标签宽度当然会延长,但根据这一点,我需要将数据保持在帧值和可视范围内。好的,为了给您指出正确的方向,您应该在添加下一个数字之前检查字符串
长度
。如果它比最大可能长度短,则可以附加。