You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Swift:如何将UILabel多行文本转为单行显示

解决UILabel显示多行转单行文本的问题

嘿,这个场景我碰到过好多次了,咱们分两步就能轻松搞定:先把API返回的多行文本处理成干净的单行字符串,再配置UILabel的属性确保它只展示一行内容。

第一步:清理多行文本转成单行

API返回的文本里通常包含换行符(\n)或者回车换行(\r\n),咱们需要把这些换行替换成空格(或者直接拼接,不过加空格阅读体验更好)。如果还有多余的空白字符(比如连续换行、制表符),也可以一起清理掉:

基础处理(仅替换换行)

如果只是简单把换行换成空格,用这个方法就够了:

// 假设这是API返回的多行文本
let multiLineText = "Hi\nHello\nHow Are You"
// 将所有换行符替换为空格,得到单行文本
let singleLineText = multiLineText.replacingOccurrences(of: "\n", with: " ")
// 要是需要兼容Windows风格的回车换行,就再加一句:
// let singleLineText = multiLineText.replacingOccurrences(of: "\r\n", with: " ").replacingOccurrences(of: "\n", with: " ")

进阶处理(清理所有多余空白)

如果文本里有连续的换行、制表符或者多个空格,用正则表达式一次性清理成单个空格,还能去掉首尾的空白:

let cleanedText = multiLineText
    .replacingOccurrences(of: "\\s+", with: " ", options: .regularExpression)
    .trimmingCharacters(in: .whitespacesAndNewlines)

第二步:配置UILabel为单行显示

处理好文本后,一定要给UILabel设置两个关键属性,确保它只显示一行:

let yourLabel = UILabel()
yourLabel.text = cleanedText // 用刚才处理好的单行文本
yourLabel.numberOfLines = 1 // 强制只显示一行
// 设置文本过长时的截断方式,根据需求选:
// .byTruncatingTail:尾部加省略号(默认)
// .byTruncatingMiddle:中间加省略号
// .byTruncatingHead:头部加省略号
// .byClipping:直接截断不显示省略号
yourLabel.lineBreakMode = .byTruncatingTail

这样操作之后,UILabel就会完美展示处理后的单行文本啦!

内容的提问来源于stack exchange,提问作者Kavin Kumar Arumugam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:24:52