挺喜欢这个库,但是使用的时候遇到了一些问题
yzjzmn opened this issue · comments
3.3.3版本性能问题,加载多条会明显卡顿
iOS12使用action会crash
title包含emjio表情通过索引匹配不准确
iOS12使用action会crash
在3.3.4版本中已修复 其他问题我看一下
3.3.3版本性能问题,加载多条会明显卡顿
具体从哪方面体现的?
title包含emjio表情通过索引匹配不准确
这个也麻烦提供一下示例 🙏🏻
同样的两个问题,我这边的情况是
- 语音社交类应用,房间聊天列表信息有大量富文本, 用户a 赠与用户b 礼物【礼物图片】 这 5段富文本拼接,当大量出现的时候会很卡, 现在我不用三方,自己写富文本很流畅,后续有空我再弄个demo上来
- 有部分emoji 不能识别,会被截半,显示⍰
同样的两个问题,我这边的情况是
- 语音社交类应用,房间聊天列表信息有大量富文本, 用户a 赠与用户b 礼物【礼物图片】 这 5段富文本拼接,当大量出现的时候会很卡, 现在我不用三方,自己写富文本很流畅,后续有空我再弄个demo上来
- 有部分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添加段落并不生效
同样的两个问题,我这边的情况是
- 语音社交类应用,房间聊天列表信息有大量富文本, 用户a 赠与用户b 礼物【礼物图片】 这 5段富文本拼接,当大量出现的时候会很卡, 现在我不用三方,自己写富文本很流畅,后续有空我再弄个demo上来
- 有部分emoji 不能识别,会被截半,显示⍰
使用range的时候计算长度和下标用string.utf16.count就可解决
@yzjzmn @propertyChen 方便提供一些emoji的示例吗? 我看了一下内部使用的都是NSAttributedString
和NSRange
, 似乎不存在string.count的问题
如你的代码:
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
如你的代码: 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