UIActivityViewController分享带多空格文本时空格丢失,如何保留?
如何通过UIActivityViewController分享时保留文本中的多个空格?
当使用UIActivityViewController分享带连续多空格的文本(比如Estimate: $400)时,收件方收到的内容会自动把多余空格合并成单个,变成Estimate: $400。下面提供几种可行的解决方法:
方法1:替换普通空格为非换行Unicode空格
把文本里的普通空格替换成非换行空格(Unicode编码\u{00A0}),这种空格不会被邮件或文本工具自动合并。修改代码如下:
@IBAction func shareTextButton(_ sender: UIButton) { // 原始带多空格的文本 let originalText = "Estimate: $400" // 替换普通空格为非换行空格 let text = originalText.replacingOccurrences(of: " ", with: "\u{00A0}") let textToShare = [text] let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil) self.present(activityViewController, animated: true, completion: nil) }
方法2:分享富文本(NSAttributedString)
如果需要更灵活的格式控制,直接分享富文本对象,系统会保留排版细节,包括多空格:
@IBAction func shareTextButton(_ sender: UIButton) { let attributedText = NSMutableAttributedString(string: "Estimate: $400") // 可根据需求设置字体、颜色等属性 attributedText.addAttribute(.font, value: UIFont.systemFont(ofSize: 16), range: NSRange(location: 0, length: attributedText.length)) let textToShare = [attributedText] let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil) self.present(activityViewController, animated: true, completion: nil) }
方法3:用HTML格式分享
把文本转换成HTML格式,用 表示需要保留的空格,邮件客户端能正确解析这种格式:
@IBAction func shareTextButton(_ sender: UIButton) { let originalText = "Estimate: $400" // 替换空格为HTML非换行空格标签 let htmlText = originalText.replacingOccurrences(of: " ", with: " ") let htmlString = "<html><body>\(htmlText)</body></html>" let textToShare = [htmlString] let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil) self.present(activityViewController, animated: true, completion: nil) }
内容的提问来源于stack exchange,提问作者nitin67
相关产品推荐
相关产品推荐

