gpt4 book ai didi

swift - 在 Swift 中使用自动换行自动调整多行 UILabel

转载 作者:行者123 更新时间:2023-11-28 08:06:35 39 4
gpt4 key购买 nike

我有一个带有 UILabel 的 Collection View ,它们被限制在容器单元格的宽度和高度上。每个 UILabel 都有可自定义的文本。我希望将此文本缩小并自动换行,以适应尽可能大的文本。我尝试了很多很多线程,阅读了 objc 中的解决方案,但没有任何效果。我想不通。我们在这里看到的只是带有 Truncate Tail 的最小字体大小,它应该可以工作,但是 'd' 不断被剪掉,我不明白为什么。

有人给我一些建议吗?我已经尝试了一些编程解决方案,但到目前为止没有任何效果。

这就是我得到的:

What I am getting

这就是我想要的:

What I want

最佳答案

我遇到了同样的问题。我为 UILabel 创建了一个扩展来处理这个问题。您可以尝试根据您的需要进行调整。

func adjustFontSizeToWidth() {

enum Constants {
static let fontDecrement: CGFloat = 1.0
static let minimumFontSize: CGFloat = 6.0
}

var characterSet = CharacterSet.whitespacesAndNewlines
characterSet.insert(charactersIn: "-")
let words = text?.components(separatedBy: characterSet)

var largestWord = ""
var largestWordWidth: CGFloat = 0

words?.forEach { word in
let wordSize = (word as NSString).size(withAttributes: [NSAttributedString.Key.font: font])
let wordWidth = wordSize.width

if wordWidth > largestWordWidth {
largestWordWidth = wordWidth
largestWord = word
}
}

while largestWordWidth > bounds.width && font.pointSize > Constants.minimumFontSize {
font = font.withSize(font.pointSize - Constants.fontDecrement)
let largestWordSize = (largestWord as NSString).size(withAttributes: [NSAttributedString.Key.font: font])
largestWordWidth = largestWordSize.width
}
}

但是当您在其上调用 adjustFontSizeToWidth() 时,请确保标签具有正确的边界。例如,您可以覆盖 layoutSubviews()

关于swift - 在 Swift 中使用自动换行自动调整多行 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44915370/

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