lixiang1994 / AttributedString

基于Swift插值方式优雅的构建富文本, 支持点击长按事件, 支持不同类型过滤, 支持自定义视图等.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

挺喜欢这个库,但是使用的时候遇到了一些问题

yzjzmn opened this issue · comments

3.3.3版本性能问题,加载多条会明显卡顿

iOS12使用action会crash

title包含emjio表情通过索引匹配不准确

commented

iOS12使用action会crash 在3.3.4版本中已修复 其他问题我看一下

commented

3.3.3版本性能问题,加载多条会明显卡顿 具体从哪方面体现的?

commented

title包含emjio表情通过索引匹配不准确这个也麻烦提供一下示例 🙏🏻

commented

同样的两个问题,我这边的情况是

  1. 语音社交类应用,房间聊天列表信息有大量富文本, 用户a 赠与用户b 礼物【礼物图片】 这 5段富文本拼接,当大量出现的时候会很卡, 现在我不用三方,自己写富文本很流畅,后续有空我再弄个demo上来
  2. 有部分emoji 不能识别,会被截半,显示⍰
commented

同样的两个问题,我这边的情况是

  1. 语音社交类应用,房间聊天列表信息有大量富文本, 用户a 赠与用户b 礼物【礼物图片】 这 5段富文本拼接,当大量出现的时候会很卡, 现在我不用三方,自己写富文本很流畅,后续有空我再弄个demo上来
  2. 有部分emoji 不能识别,会被截半,显示⍰

麻烦了🙏🏻

关于字符串包含emoji使用NSRange出现乱码问题,最终查到Swift的count返回的只是Unicode字符个数,所以在去长度和下标的时候 要用 string.utf16.count
具体参考:https://blog.csdn.net/song_bin/article/details/123855303

另外发现在富文本中添加段落不生效的问题,这是我的使用方式:
let protocolAttri: ASAttributedString = .init(string: RString.loginOfTermsOfService(), .foreground(UIColor(hex: 0x2DCDFF)), .action([.foreground(UIColor(hex: 0x2DCDFF))]) { [weak self] in
self?.clickProtocolAction()
})
let tempText: ASAttributedString = .init(string: RString.loginOfAnd())
let policyAttri: ASAttributedString = .init(string: RString.loginOfPrivacyPolicy(), .foreground(UIColor(hex: 0x2DCDFF)), .action([.foreground(UIColor(hex: 0x2DCDFF))]) { [weak self] in
self?.clickPolicyAction()
})
var showTitle = protocolAttri + tempText + policyAttri
showTitle.add(attributes: [.paragraph(.lineSpacing(6), .alignment(.left), .minimumLineHeight(22)), .font(PingFangSC.regular.size(14))])

最终showTitle添加段落并不生效

同样的两个问题,我这边的情况是

  1. 语音社交类应用,房间聊天列表信息有大量富文本, 用户a 赠与用户b 礼物【礼物图片】 这 5段富文本拼接,当大量出现的时候会很卡, 现在我不用三方,自己写富文本很流畅,后续有空我再弄个demo上来
  2. 有部分emoji 不能识别,会被截半,显示⍰

使用range的时候计算长度和下标用string.utf16.count就可解决

commented

👍🏻👍🏻👍🏻👍🏻👍🏻 晚些我会发布新版本, 非常感谢 @yzjzmn

commented

@yzjzmn @propertyChen 方便提供一些emoji的示例吗? 我看了一下内部使用的都是NSAttributedStringNSRange, 似乎不存在string.count的问题

commented

image

image

如你的代码:
var string: ASAttributedString = "1111😄😄😄2222"
string.add(attributes: [.action(action), RSRange:(RSRange(4,3))])

因为使用了Range(4,3) 这三个😄符号会变成⍰,因为很多创建Range的时候会用到String.count计算下标和长度

关于字符串包含emoji使用NSRange出现乱码问题,最终查到Swift的count返回的只是Unicode字符个数,所以在去长度和下标的时候 要用 string.utf16.count
具体参考:https://blog.csdn.net/song_bin/article/details/123855303

commented
image

如你的代码: var string: ASAttributedString = "1111😄😄😄2222" string.add(attributes: [.action(action), RSRange:(RSRange(4,3))])

因为使用了Range(4,3) 这三个😄符号会变成⍰,因为很多创建Range的时候会用到String.count计算下标和长度

关于字符串包含emoji使用NSRange出现乱码问题,最终查到Swift的count返回的只是Unicode字符个数,所以在去长度和下标的时候 要用 string.utf16.count 具体参考:https://blog.csdn.net/song_bin/article/details/123855303

我还是没复现出来
image
image