NSStrikethroughStyleAttributeName ,如何删除 iOS 10.3 中的字符串?
NSStrikethroughStyleAttributeName , How to strike out the string in iOS 10.3?
我在 iOS 10.3 发布之前使用了这行代码,并且工作正常。
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@",strMRP,strOffer]];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:12] range:NSMakeRange(0, strMRP.length)];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:15] range:NSMakeRange(strMRP.length, strOffer.length+1)];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleDouble]
range:NSMakeRange(0,strMRP.length)];
但是现在它停止工作了,有没有其他方法可以删除?
它是 iOS10.3 中的错误,NSStrikethroughStyleAttributeName
(任何 NSUnderlineStyle
情况) 在 iOS SDK 10.3 上不再工作。
if anyone found the updated answer related to this , please inform here, I will update my answer.
产品版本:10.3
创建时间:2017 年 3 月 14 日
发起时间:2017 年 3 月 14 日
打开雷达Link:http://www.openradar.appspot.com/31034683
雷达状态当前为开启状态
你也可以看到替代样本可能有用。
如上所述,这是一个 iOS 10.3 错误。
我们需要立即解决方法,以防万一有人在寻找提示:
我们的标签通过 NSMutableAttributedString
和 NSMutableParagraphStyle
设置了属性。当不使用/使用 "empty" 段落样式(没有设置任何属性的实例)时,该错误不会发生。
所以在这种情况下,省略段落样式并解决当时缺少的段落属性为我们解决了这个问题。
与
配合使用效果很好
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@",strMRP,strOffer]];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:12] range:NSMakeRange(0, strMRP.length)];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:15] range:NSMakeRange(strMRP.length, strOffer.length+1)];
[attributeString addAttribute:NSBaselineOffsetAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleNone]
range:NSMakeRange(0,strMRP.length)];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleDouble]
range:NSMakeRange(0,strMRP.length)];
我在 developer forum 上找到了一种适合我的解决方法。添加 NSBaselineOffsetAttributeName
到字符串属性解决了这个问题:)
iOS 10.3 以后需要添加 NSBaselineOffsetAttributeName。
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@",strMRP,strOffer]];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:12] range:NSMakeRange(0, strMRP.length)];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:15] range:NSMakeRange(strMRP.length, strOffer.length+1)];
[attributeString addAttribute:NSBaselineOffsetAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleNone]
range:NSMakeRange(0,strMRP.length)];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleDouble]
range:NSMakeRange(0,strMRP.length)];
添加 NSBaselineOffsetAttributeName 后,它适用于单线、双线等。
只需使用这个:-
NSMutableAttributedString *costPrice = [[NSMutableAttributedString
alloc] initWithString:[NSString stringWithFormat:@"₹ %@",strDetails]];
[costPrice addAttribute:NSBaselineOffsetAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleSingle] range:NSMakeRange(0,costPrice.length)];
这是临时解决方案。希望它有效
***您可以将其传递给函数并享受它!!!
func customString(currentprice:String,oldPrice:String) -> NSMutableAttributedString{
// 1
let NewString = currentprice + " " + oldPrice
let string = NewString as NSString
let attributedString = NSMutableAttributedString(string: string as String)
// 2
let firstAttributes = [NSForegroundColorAttributeName: UIColor(red: 238/255, green: 140/255, blue: 84/255, alpha: 1),NSBaselineOffsetAttributeName:1]
let secondAttributes = [NSForegroundColorAttributeName: UIColor.lightGrayColor(), NSStrikethroughStyleAttributeName: 1]
// 3
attributedString.addAttributes(firstAttributes, range: string.rangeOfString(currentprice))
attributedString.addAttributes(secondAttributes, range: string.rangeOfString(oldPrice))
return attributedString
}
并像这样使用:
YourUILabel.attributedText = customString("300", oldPrice: "400")
我在 iOS 10.3 发布之前使用了这行代码,并且工作正常。
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@",strMRP,strOffer]];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:12] range:NSMakeRange(0, strMRP.length)];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:15] range:NSMakeRange(strMRP.length, strOffer.length+1)];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleDouble]
range:NSMakeRange(0,strMRP.length)];
但是现在它停止工作了,有没有其他方法可以删除?
它是 iOS10.3 中的错误,NSStrikethroughStyleAttributeName
(任何 NSUnderlineStyle
情况) 在 iOS SDK 10.3 上不再工作。
if anyone found the updated answer related to this , please inform here, I will update my answer.
产品版本:10.3
创建时间:2017 年 3 月 14 日
发起时间:2017 年 3 月 14 日
打开雷达Link:http://www.openradar.appspot.com/31034683
雷达状态当前为开启状态
你也可以看到替代样本
如上所述,这是一个 iOS 10.3 错误。
我们需要立即解决方法,以防万一有人在寻找提示:
我们的标签通过 NSMutableAttributedString
和 NSMutableParagraphStyle
设置了属性。当不使用/使用 "empty" 段落样式(没有设置任何属性的实例)时,该错误不会发生。
所以在这种情况下,省略段落样式并解决当时缺少的段落属性为我们解决了这个问题。
与
配合使用效果很好 NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@",strMRP,strOffer]];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:12] range:NSMakeRange(0, strMRP.length)];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:15] range:NSMakeRange(strMRP.length, strOffer.length+1)];
[attributeString addAttribute:NSBaselineOffsetAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleNone]
range:NSMakeRange(0,strMRP.length)];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleDouble]
range:NSMakeRange(0,strMRP.length)];
我在 developer forum 上找到了一种适合我的解决方法。添加 NSBaselineOffsetAttributeName
到字符串属性解决了这个问题:)
iOS 10.3 以后需要添加 NSBaselineOffsetAttributeName。
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@\n%@",strMRP,strOffer]];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:12] range:NSMakeRange(0, strMRP.length)];
[attributeString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:15] range:NSMakeRange(strMRP.length, strOffer.length+1)];
[attributeString addAttribute:NSBaselineOffsetAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleNone]
range:NSMakeRange(0,strMRP.length)];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
value:[NSNumber numberWithInteger: NSUnderlineStyleDouble]
range:NSMakeRange(0,strMRP.length)];
添加 NSBaselineOffsetAttributeName 后,它适用于单线、双线等。
只需使用这个:-
NSMutableAttributedString *costPrice = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"₹ %@",strDetails]]; [costPrice addAttribute:NSBaselineOffsetAttributeName value:[NSNumber numberWithInteger: NSUnderlineStyleSingle] range:NSMakeRange(0,costPrice.length)];
这是临时解决方案。希望它有效
***您可以将其传递给函数并享受它!!!
func customString(currentprice:String,oldPrice:String) -> NSMutableAttributedString{
// 1
let NewString = currentprice + " " + oldPrice
let string = NewString as NSString
let attributedString = NSMutableAttributedString(string: string as String)
// 2
let firstAttributes = [NSForegroundColorAttributeName: UIColor(red: 238/255, green: 140/255, blue: 84/255, alpha: 1),NSBaselineOffsetAttributeName:1]
let secondAttributes = [NSForegroundColorAttributeName: UIColor.lightGrayColor(), NSStrikethroughStyleAttributeName: 1]
// 3
attributedString.addAttributes(firstAttributes, range: string.rangeOfString(currentprice))
attributedString.addAttributes(secondAttributes, range: string.rangeOfString(oldPrice))
return attributedString
}
并像这样使用:
YourUILabel.attributedText = customString("300", oldPrice: "400")