踩坑笔记-UITextview之byTruncatingTail

       需求是这样的在文本输入框中插入通讯录联系人,并标记高亮,很愉悦的实现了效果,自己测试也OK,可是到了测试妹子手里就被玩坏了,普通文本多行是OK的,插入艾特某人高亮attributedText后文本就会变为一行,然后不管怎么输入都只有一行了,就像下图一样。

0?wx_fmt=gif

        这里写下笔者实现艾特某人高亮的实现思路,就是在选取联系人后将人名直接拼到textview的text里,然后匹配关键字生成attributedText,赋值给textview 伪代码如下:

       if let name = item.name {

           this.textView.text.append("@\(name) ")

       }

       let text = this.textView.text

       let names = this.maker.item.ante.map({ (item) -> String in

            return item.name

       })

       this.textView.attributedText =text.getAddAttribute(keywords:names)

      

     func getAddAttribute(keywords:[String]?) -> NSMutableAttributedString {

        let style = NSMutableParagraphStyle()

        style.lineBreakMode = .byTruncatingTail

        let attributeString = NSMutableAttributedString.init(

            string: self,

            attributes: [...])

        return attributeString.

     }

产品希望看到效果的如下图插入联系人后高亮,不会多行变一行,原因是

lineBreakMode这个属性设置了byTruncatingTail后,多行属性就坏了,设置为换为.byWordWrapping就OK了,当然默认是byWordWrapping不会有问题,目前我们框架里富文本util func 改变了这一属性,这个应该为APPle爸爸的锅,这里记下笔记,希望可以帮助到遇到类似问题的同学。

0?wx_fmt=gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值