我正在制作一个应用程序,我必须以 UITextView 粗体或斜体或带下划线的方式制作文本。所以我想出了这个解决方案,从textView粗体中选择范围。同样的方式,我可以使它斜体,但没有下划线,不知道如何。
//MARK: Bold Bar Button
func boldBarButtonClicked(sender : UIBarButtonItem)
{
if let selectedTextRange = self.textView.selectedTextRange
{
let beginningOfDocument = self.textView.beginningOfDocument
let startingPoint = self.textView.offsetFromPosition(beginningOfDocument, toPosition: selectedTextRange.start)
let selectedTextLength = self.textView.offsetFromPosition(selectedTextRange.start, toPosition: selectedTextRange.end)
let dict : Dictionary<String, AnyObject> = self.textView.textStorage.attributesAtIndex(startingPoint, effectiveRange: nil)
if let currentFont = dict[NSFontAttributeName] as? UIFont
{
let fontDescriptor = currentFont.fontDescriptor()
let changedFontDescriptor = fontDescriptor.fontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits.TraitBold)
let updatedFont = UIFont(descriptor: changedFontDescriptor, size: 0.0)
let updatedDict = [NSFontAttributeName : updatedFont ]
self.textView.textStorage.beginEditing()
let selectedNSRange = NSMakeRange(startingPoint, selectedTextLength)
self.textView.textStorage.setAttributes(updatedDict, range: selectedNSRange)
self.textView.textStorage.endEditing()
// Put bold tag inside letters
}
}
}
所以基本上当用户看到textView时我必须将文本设为粗体。所以我想把文本放在粗体标记和html之间。这样我就可以遍历字符并查看是否有任何粗体或斜体或下划线的文本。
我这样做的方法是否正确?查找所选范围使其变为粗体或斜体或带下划线,然后将标记放在引用字符串中,最后将此字符串传递给包含标记的服务器,以便其他人可以看到粗体或斜体或带下划线的字符。
如果相同的字符串有多个属性,如果字符串&#34; alvin&#34;有大胆的斜体和下划线,它就像U I B&#34; alvin&#39; / U / I / B(标签与html粗体,斜体,下划线相同)是否正确?我怎么能在Swift中找到这些,我想了很多,厌倦了使用正则表达式并循环遍历字符串。但无法得到正确的结果。提前谢谢。