ios - Swift:在屏幕周围截断(环绕)并转到新行时将长字符串拆分为较小的字符串
问题描述
每次到屏幕末尾并开始新行时,如何将长字符串拆分为三个不同的字符串。
注意:字符串没有换行符。所以基本上作为一个例子,我想从一个字符串中得到 3 个不同的字符串,因为字符串很长并且两次到屏幕的末尾。看看下面的图片。
下图是我目前拥有的,它是一根长字符串,我想在每次换行时将它分解成更小的 3 根字符串。
下面的代码为您提供了长字符串环绕屏幕的次数。
extension UILabel {
func numberOfLines() -> Int {
let maxSize = CGSize(width: frame.size.width, height: CGFloat(Float.infinity))
let charSize = font.lineHeight
let text = (self.text ?? "") as NSString
let textSize = text.boundingRect(with: maxSize, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil)
let linesRoundedUp = Int(ceil(textSize.height/charSize))
return linesRoundedUp
}
}
解决方案
如果我理解正确,您想换行长文本。
您可以执行以下操作来实现上述目的:
label.numberOfLines = 0;
label.lineBreakMode = .byWordWrapping
如果您希望标签将其字体大小调整为可用宽度,您可以执行以下操作:
label.numberOfLines = 0;
label.lineBreakMode = .byClipping
label.adjustsFontSizeToFitWidth = true
推荐阅读
- javascript - 如何使用 Tailwind CSS 创建左侧固定部分和右侧可滚动部分的 div?
- node.js - NodeJS 确认提示
- javascript - 反应:试图将 index.js 连接到数据库,但它不工作
- asp.net - 错误代码 - 由于 AWS 负载均衡器而将 XML 数据发布到 ASP.Net 申请表时出现 403
- react-native - React-Native webRTC icecandidate
- javascript - 是否可以使用 electron 和 nativefier 来创建原生 iOS App?
- azure-data-factory - 天蓝色数据工厂压缩限制
- node.js - 有什么方法可以改变 ReactJS 中输入字段的值吗?
- html - django不调用函数也不从数据库输出信息
- c - 在 C 中有一个指向多个不同大小的 LUT 的数组