Ios Swift 切换属性字符串的下划线
Ios Swift Toggle underline of attributed string
我写了两个函数来为字符串添加下划线和删除下划线:
我想用一个按钮切换下划线。
那么如何检查 NSMutableAttributedString 是否具有下划线属性:
func addUlnTxtFnc(TxtPsgVal :String) -> NSMutableAttributedString
{
let TxtRngVal = NSMakeRange(0, TxtPsgVal.characters.count)
let TxtUnlVal = NSMutableAttributedString(string: TxtPsgVal)
TxtUnlVal.addAttribute(NSUnderlineStyleAttributeName, value:NSUnderlineStyle.StyleSingle.rawValue, range: TxtRngVal)
return TxtUnlVal
}
func rmvUlnTxtFnc(TxtPsgVal :NSMutableAttributedString) -> NSMutableAttributedString
{
let TxtRngVal = NSMakeRange(0, TxtPsgVal.string.Len())
TxtPsgVal.removeAttribute(NSUnderlineStyleAttributeName, range: TxtRngVal)
return TxtPsgVal
}
您可以通过在作为参数进入的 NSMutableAttributedString
上调用函数 .enumerateAttribute(attrName:, inRange:, options:, usingBlock:)
进行检查:
func rmvUlnTxtFnc(TxtPsgVal: NSMutableAttributedString) -> NSMutableAttributedString {
let TxtRngVal = NSMakeRange(0, TxtPsgVal.length)
TxtPsgVal.enumerateAttribute(NSUnderlineStyleAttributeName, inRange: TxtRngVal, options: .LongestEffectiveRangeNotRequired) { attribute, range, pointer in
if attribute != nil {
TxtPsgVal.removeAttribute(NSUnderlineStyleAttributeName, range: range)
}
}
return TxtPsgVal
}
此外,您可以将第一个函数缩短为一行:
func addUlnTxtFnc(TxtPsgVal: String) -> NSMutableAttributedString {
return NSMutableAttributedString(string: TxtPsgVal, attributes: [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue])
}
顺便说一句,您的代码不符合 Swift 社区提出的 Swift style guidelines。
我写了两个函数来为字符串添加下划线和删除下划线:
我想用一个按钮切换下划线。 那么如何检查 NSMutableAttributedString 是否具有下划线属性:
func addUlnTxtFnc(TxtPsgVal :String) -> NSMutableAttributedString
{
let TxtRngVal = NSMakeRange(0, TxtPsgVal.characters.count)
let TxtUnlVal = NSMutableAttributedString(string: TxtPsgVal)
TxtUnlVal.addAttribute(NSUnderlineStyleAttributeName, value:NSUnderlineStyle.StyleSingle.rawValue, range: TxtRngVal)
return TxtUnlVal
}
func rmvUlnTxtFnc(TxtPsgVal :NSMutableAttributedString) -> NSMutableAttributedString
{
let TxtRngVal = NSMakeRange(0, TxtPsgVal.string.Len())
TxtPsgVal.removeAttribute(NSUnderlineStyleAttributeName, range: TxtRngVal)
return TxtPsgVal
}
您可以通过在作为参数进入的 NSMutableAttributedString
上调用函数 .enumerateAttribute(attrName:, inRange:, options:, usingBlock:)
进行检查:
func rmvUlnTxtFnc(TxtPsgVal: NSMutableAttributedString) -> NSMutableAttributedString {
let TxtRngVal = NSMakeRange(0, TxtPsgVal.length)
TxtPsgVal.enumerateAttribute(NSUnderlineStyleAttributeName, inRange: TxtRngVal, options: .LongestEffectiveRangeNotRequired) { attribute, range, pointer in
if attribute != nil {
TxtPsgVal.removeAttribute(NSUnderlineStyleAttributeName, range: range)
}
}
return TxtPsgVal
}
此外,您可以将第一个函数缩短为一行:
func addUlnTxtFnc(TxtPsgVal: String) -> NSMutableAttributedString {
return NSMutableAttributedString(string: TxtPsgVal, attributes: [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue])
}
顺便说一句,您的代码不符合 Swift 社区提出的 Swift style guidelines。