gpt4 book ai didi

ios - 当没有足够的空间来使用自动布局显示全文时隐藏 UILabel

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:15:54 25 4
gpt4 key购买 nike

我有一个水平堆栈 View ,从左到右包含三个控件:一个自定义 UIView 子类(具有固有内容大小)和两个 UILabel。两个标签都配置如下:

label.numberOfLines = 1
label.adjustsFontSizeToFitWidth = false
label.adjustsFontForContentSizeCategory = true

我将堆栈 View 分布设置为 .fill 以及三个控件的内容拥抱优先级和内容压缩阻力优先级,以便自定义 View 和第一个标签的框架拥抱内容,第二个标签拉伸(stretch)来填补剩余的空间。它看起来像这样:

|[custom view][label 1][label 2     ]|

当我将系统文本大小调整得更大,以至于没有足够的水平空间来显示两个标签的全文时,我的问题就出现了。我不想用“...”截断第一个标签的文本,而是希望在没有足够空间显示全文时将其完全隐藏。有什么方法可以使用自动布局来做到这一点吗?

感觉好像应该有一种方法可以使用 width = 0 约束来做到这一点,并且优先级围绕压缩阻力优先级仔细校准,但我无法完全理解如何做到这一点。

最佳答案

所以最终我没能找到使用自动布局来完成此操作的方法。据我所知,AL 不允许您使用低优先级约束来定义回退布局。相反,低优先级约束的存在是为了阐明当必需的和高优先级的约束留有额外余地时应该如何布局。

相反,我意识到这作为 label 的行为更有意义,因为 UILabel 已经实现了一些文本不适合时的行为:它可以以各种方式缩小字体、剪辑或截断。因此,将 UILabel 子类化并在其中添加行为是有意义的。这是代码:

class HidingLabel: UILabel {
override func layoutSubviews() {
super.layoutSubviews()

if bounds.size.width < intrinsicContentSize.width {
frame = CGRect.zero
}
}
}

关于ios - 当没有足够的空间来使用自动布局显示全文时隐藏 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44910581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com