如何在 swift 中保留字符串上的属性组合
How to keep a combination of attributes on a string in swift
我有一个需要设置属性的字符串。属性(粗体、斜体、删除线、下划线)是单独添加的,但它们并没有与字符串保持一致。我想知道如何用一个字符串保持不同的属性完好无损,然后根据需要一一删除。
Bold -
if textBold == true {
let string = text
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont.boldSystemFont(ofSize: 25)
]
let attributedString = NSAttributedString(string: string, attributes: attributes)
modifiedString = attributedString
text_View.attributedText = modifiedString
text_View.sizeToFit()
databaseHandlerObj.editLabelData(textProjectId: fetchTextProjectId, text_Id: fetchTextId, text: modifiedString.string)
}
Italic -
if textItalic == true {
text_View.sizeToFit()
let string = text
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont.italicSystemFont(ofSize: CGFloat(fontSize))
]
let attributedString = NSAttributedString(string: string, attributes: attributes)
self.modifiedString = attributedString
text_View.attributedText = modifiedString
databaseHandlerObj.editLabelData(textProjectId: fetchTextProjectId, text_Id: fetchTextId, text: modifiedString.string)
}
Underline -
if textUnderline == true {
text_View.sizeToFit()
let string = text
let attributedString = NSMutableAttributedString.init(string: string)
attributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: 1, range:
NSRange.init(location: 0, length: attributedString.length))
self.modifiedString = attributedString
text_View.attributedText = modifiedString
databaseHandlerObj.editLabelData(textProjectId: fetchTextProjectId, text_Id: fetchTextId, text: modifiedString.string)
}
Strikethrough -
if textStrikethrough == true {
text_View.sizeToFit()
let string = text
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: string)
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
self.modifiedString = attributeString
text_View.attributedText = modifiedString
databaseHandlerObj.editLabelData(textProjectId: fetchTextProjectId, text_Id: fetchTextId, text: modifiedString.string)
}
在属性字典上添加条件。
let string = text
var attributes: [NSAttributedString.Key: Any] = [:]
if bold {
attributes[.font] = UIFont.boldSystemFont(ofSize: 25)
}
if italic {
attributes[.font] = UIFont.italicSystemFont(ofSize: CGFloat(fontSize))
}
if underline {
attributes[.underlineStyle] = 1
}
let attributedString = NSAttributedString(string: string, attributes: attributes)
// Other Code
我有一个需要设置属性的字符串。属性(粗体、斜体、删除线、下划线)是单独添加的,但它们并没有与字符串保持一致。我想知道如何用一个字符串保持不同的属性完好无损,然后根据需要一一删除。
Bold -
if textBold == true {
let string = text
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont.boldSystemFont(ofSize: 25)
]
let attributedString = NSAttributedString(string: string, attributes: attributes)
modifiedString = attributedString
text_View.attributedText = modifiedString
text_View.sizeToFit()
databaseHandlerObj.editLabelData(textProjectId: fetchTextProjectId, text_Id: fetchTextId, text: modifiedString.string)
}
Italic -
if textItalic == true {
text_View.sizeToFit()
let string = text
let attributes: [NSAttributedString.Key: Any] = [
.font: UIFont.italicSystemFont(ofSize: CGFloat(fontSize))
]
let attributedString = NSAttributedString(string: string, attributes: attributes)
self.modifiedString = attributedString
text_View.attributedText = modifiedString
databaseHandlerObj.editLabelData(textProjectId: fetchTextProjectId, text_Id: fetchTextId, text: modifiedString.string)
}
Underline -
if textUnderline == true {
text_View.sizeToFit()
let string = text
let attributedString = NSMutableAttributedString.init(string: string)
attributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: 1, range:
NSRange.init(location: 0, length: attributedString.length))
self.modifiedString = attributedString
text_View.attributedText = modifiedString
databaseHandlerObj.editLabelData(textProjectId: fetchTextProjectId, text_Id: fetchTextId, text: modifiedString.string)
}
Strikethrough -
if textStrikethrough == true {
text_View.sizeToFit()
let string = text
let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: string)
attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 2, range: NSMakeRange(0, attributeString.length))
self.modifiedString = attributeString
text_View.attributedText = modifiedString
databaseHandlerObj.editLabelData(textProjectId: fetchTextProjectId, text_Id: fetchTextId, text: modifiedString.string)
}
在属性字典上添加条件。
let string = text
var attributes: [NSAttributedString.Key: Any] = [:]
if bold {
attributes[.font] = UIFont.boldSystemFont(ofSize: 25)
}
if italic {
attributes[.font] = UIFont.italicSystemFont(ofSize: CGFloat(fontSize))
}
if underline {
attributes[.underlineStyle] = 1
}
let attributedString = NSAttributedString(string: string, attributes: attributes)
// Other Code