亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

iOS10.3系統以后(NSStrikethroughStyleAttributeName)富文本不顯示

標簽:
Html5

在iOS10.3系统上, 删除线(NSStrikethroughStyleAttributeName)富文本不显示,确切的说是在字符串中间某一段文字添加删除线富文本会出现异常。这个可能是苹果系统的bug。

iOS 10.3 系统以后,给 字符串中的某一段文字添加删除线富文本 是不可以的;

中文整个字符串添加删除线富文本也不行,只要添加删除线富文本的字符串包含中文就是不行;

先设置其中一部分字号(NSFontAttributeName)富文本,在一起设置删除线富文本也不行;

    NSMutableAttributedString *markingAttrStr = [[NSMutableAttributedString alloc] initWithString:markingPriceStr];//    [markingAttrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:9.0f] range:NSMakeRange(0, 1)]; 必须要注释掉这个
    [markingAttrStr addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlineStyleSingle) range:NSMakeRange(0, markingPriceStr.length)];
    _markingPriceLab.attributedText = markingAttrStr;

特别注意,这个人民币符号“¥”和“¥”的区别,前面那个就可以,后面直接切换成中文输入法的就不行。

iOS 10.3以前可以正常显示

    NSString *marketPriceStr = [NSString stringWithFormat:@"¥%.2f", product.marketPrice];    NSString *showStr = [NSString stringWithFormat:@"¥%.2f %@", product.goodsPrice, marketPriceStr];    NSMutableAttributedString *showAttrStr = [[NSMutableAttributedString alloc] initWithString:showStr];    NSRange range = [showStr rangeOfString:marketPriceStr options:NSBackwardsSearch];    NSDictionary *attr = @{                           NSFontAttributeName               : [UIFont systemFontOfSize:12],                           NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid),                           NSStrikethroughColorAttributeName : [UIColor colorWithRed:230 / 255.0f green:23 / 255.0f blue:115 / 255.0f alpha:1]
                           };
    [showAttrStr addAttributes:attr range:range];    self.priceLabel.attributedText = showAttrStr;

iOS 10.3上显示异常,需要在添加一个NSBaselineOffsetAttributeName属性才可以。

    NSString *marketPriceStr = [NSString stringWithFormat:@"¥%.2f", product.marketPrice];    NSString *showStr = [NSString stringWithFormat:@"¥%.2f %@", product.goodsPrice, marketPriceStr];    NSMutableAttributedString *showAttrStr = [[NSMutableAttributedString alloc] initWithString:showStr];    NSRange range = [showStr rangeOfString:marketPriceStr options:NSBackwardsSearch];    NSDictionary *attr = @{                           NSFontAttributeName               : [UIFont systemFontOfSize:12],                           NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle | NSUnderlinePatternSolid),                           NSBaselineOffsetAttributeName     : @(NSUnderlineStyleSingle),                           NSStrikethroughColorAttributeName : [UIColor colorWithRed:230 / 255.0f green:23 / 255.0f blue:115 / 255.0f alpha:1]
                           };
    [showAttrStr addAttributes:attr range:range];    self.priceLabel.attributedText = showAttrStr;

注意:这个时候在模拟器上是可以的,真机上还是不行。原因就是你设置字符串中的某一段文字下划线富文本。 我的解决办法是:1、将原来的一个label 用两个label合成,单独设置富文本,好麻烦啊。2、添加一个View在要删除的字符串上面,替代下划线。也不太好。。

朋友们有更好的解决办法没? 求告知,感激不尽啊。O(∩_∩)O谢谢!

这样直接给某一字符串全体设置下划线富文本是可以的
        NSDictionary *attribtDic = @{                                     NSStrikethroughStyleAttributeName:[NSNumber numberWithInteger:NSUnderlineStyleSingle],                                     NSForegroundColorAttributeName:kSubTextFontColor1
                                     };        NSMutableAttributedString *attribtStr   = [[NSMutableAttributedString alloc]initWithString:priceString attributes:attribtDic];        self.priceLabel.attributedText  = attribtStr;
这里也要说一下字符串中给某一个特定内容字符串设置富文本的方法,实质是查找这个字符串方法

//先拿到要设置富文本字符串的位置 这里就是给showStr字符串里的marketPriceStr这些字设置富文本 NSRange range = [showStr rangeOfString:marketPriceStr options:NSBackwardsSearch]; 然后添加富文本 在这个找到的特殊位置 [showAttrStr addAttributes:attr range:range];

还有UILabel显示文字问题

UlLabel显示文字,可以选择NSLineBreakMode方式,也可以设置NSTextAlignment文字对齐方式。

当你在UILabel 正上方设置一个控件,它们都是右对齐方式显示,这时候显示中文可能会出现不是特别右对齐的情况。
解决办法:

设置一下NSTextAlignment文字对齐方式,选择两端对齐方式即可:
self.priceLabel.textAlignment = NSTextAlignmentJustified; //两端对齐



作者:Eddiegooo
链接:https://www.jianshu.com/p/768cfc8f7765


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消