我无法从UITextView
获取.text值以转换为字符串,因此我可以将其编入索引并在“\ n”上吐出字符串。如果我在引号中传递一个字符串它可以工作,但如果我使用.text值它拒绝拆分“\ n”
这是我的功能:
func formatLabel(string: String, title_color: UIColor, title_font_size: CGFloat, title_font_weight: UIFont.Weight, subtitle_color: UIColor, subtitle_font_size: CGFloat) -> NSMutableAttributedString {
//getting the range to separate the button title strings
let index = string.index(of: "\n") ?? string.endIndex
let substring1 = String(string[..<index])
let substring2 = String(string[index...])
print("string:", string)
print("index: ",index)
print("line 1", substring1)
print("line 2", substring2)
}
这是我的ViewController代码:
@IBAction func btnUpdate(_ sender: Any) {
txtOutput.attributedText = formatLabel(string: txtInput.text!, title_color: UIColor.gray, title_font_size: 17, title_font_weight: UIFont.Weight.bold, subtitle_color: UIColor.lightGray, subtitle_font_size: 13)
txtOutput2.attributedText = formatLabel(string: "Title\nSub Title", title_color: UIColor.gray, title_font_size: 17, title_font_weight: UIFont.Weight.bold, subtitle_color: UIColor.lightGray, subtitle_font_size: 13)
}
这是打印输出:
string: Title\nSub Title
index: Index(_compoundOffset: 64, _cache:
Swift.String.Index._Cache.utf16)
line 1 Title\nSub Title
line 2
string: Title
Sub Title
index: Index(_compoundOffset: 20, _cache: Swift.String.Index._Cache.character(1))
line 1 Title
line 2
Sub Title
因此,在使用UITextView控件时,我无法在索引(of:“\ n”)上打破行,但在使用文字文本时就好了。我所能想到的只是在Swift 4中,为了处理CompoundOffset,必须要做一些时髦的事情。这个文档很难记录,因此无法弄清楚如何解决我的问题并让控制文本表现为字符串。任何帮助将不胜感激。
答案 0 :(得分:1)
UITextView
组件不会自动将用户输入的“\ n”转换为返回字符。
您可以使用:
txtOutput.attributedText = formatLabel(string: txtInput.text!.replacingOccurrences(of: "\\n", with: "\n"), title_color: UIColor.gray, title_font_size: 17, title_font_weight: UIFont.Weight.bold, subtitle_color: UIColor.lightGray, subtitle_font_size: 13)
这将用适当的返回字符替换“\ n”。
P.S。但是,您不应强制解包txtInput.text
值。