- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
之前,我将特定字符串更改为包含图像的 NSTextAttachment 以显示自定义表情符号。
字符串转NSTextAttachment代码
{
guard
let original = self.attributedText
else { return }
let pattern = "\\[img src=(\\w+)\\]"
do{
let regex = try NSRegularExpression(pattern: pattern, options: [])
let matches = regex.matches(in: original.string, options : [], range : NSMakeRange(0, original.string.characters.count))
let attributeString = NSMutableAttributedString(attributedString: original)
for match in matches.reversed(){
let emoticonString = attributeString.attributedSubstring(from: match.rangeAt(1)).string
if let emoticonAndroid = Emoticon(rawValue: emoticonString),
let image = UIImage(named : "\(emoticonAndroid.convertFromAndroid().rawValue)_000"){
image.accessibilityIdentifier = emoticonAndroid.rawValue
let attributedImage = NSTextAttachment()
attributedImage.image = image
attributedImage.bounds = CGRect(x: 0, y: -8, width: 25, height: 25)
attributeString.beginEditing()
attributeString.replaceCharacters(in: match.rangeAt(0), with: NSAttributedString(attachment: attributedImage))
attributeString.endEditing()
}
}
self.attributedText = attributeString
}catch{
return
}
}
但是,我需要将 NSTextAttachment 替换为字符串以发送消息。我使用了 NSMutableAttributedString.replaceCharacters(in:with:) 方法。但是,它只能使用一个表情符号图像。
one emoticon two emoticons or more
我该如何解决?
NSTextAttachment 到字符串代码
{
if let original = self.attributedText{
let attributeString = NSMutableAttributedString(attributedString: original)
original.enumerateAttribute(NSAttachmentAttributeName, in: NSMakeRange(0, original.length), options: [], using: { attribute, range, _ in
if let attachment = attribute as? NSTextAttachment,
let image = attachment.image{
let str = "[img src=\(image.accessibilityIdentifier!)]"
attributeString.beginEditing()
attributeString.(in: range, with: str)
attributeString.endEditing()
}
})
self.attributedText = attributeString
return attributeString.string
}else{
return nil
}
}
最佳答案
嗯..我解决了这个问题。
首先:统计 NSTextAttachment 的个数
var count = 0
self.attributedText.enumerateAttribute(NSAttachmentAttributeName, in : NSMakeRange(0, self.attributedText.length), options: [], using: { attribute, range, _ in
if let attachment = attribute as? NSTextAttachment,
let image = attachment.image{
count = count + 1
}
})
return count
第二:将 NSTextAttachment 替换为 String 并计算更改的范围。 <- 重复
for i in 0..<self.countOfNSTextAttachment(){
let attributedString = NSMutableAttributedString(attributedString: self.attributedText)
var count = 0
attributedString.enumerateAttribute(NSAttachmentAttributeName, in : NSMakeRange(0, attributedString.length), options: [], using: { attribute, range, _ in
if let attachment = attribute as? NSTextAttachment,
let image = attachment.image{
let str = "[img src=\(image.accessibilityIdentifier!)]"
if count == 0{
attributedString.beginEditing()
attributedString.replaceCharacters(in: range, with: NSAttributedString(string : str))
attributedString.endEditing()
self.attributedText = attributedString
}else{
return
}
count = count + 1
}
})
}
return self.attributedText.string
结果:result
完美!!
关于swift - 将包含图像的 NSTextAttachment 替换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45524664/
我正在尝试创建一个带有文本的标签,并在前面加上一个图标,但不幸的是我无法仅更改图标的颜色。它始终使用默认颜色着色。 我是这样做的: var titleStringAttribute = NSMutab
如何像下面的示例一样在 NSTextAttachments 周围设置间距? 在示例中,当我将 NSTextAttachment 附加到 NSAttributedString 时,无间距是默认行为。 最
使用 iOS7,我可以使用 NSTextAttachments 毫无问题地在 UITextView 中显示图像。但是,是否可以使用 NSTextAttachments 在 UITextView 中显示
我想在我添加到 UITextView 的一些图像上添加额外信息。该类是NSTextAttachment()。我需要我的图像具有一些 String 描述,以便应用知道图像中的内容。如何添加这个额外的功能
我有一个通知中心小部件,它有一个带有表格 View 单元格的表格 View 。在单元格中,我有一个标签,我想用文本 + 图像显示。图像作为 NSTextAttachment 包含在内。我在应用程序中有
NSTextAttachment 锁定图像在边缘被截断,但当线条没有在边缘断开时,可以看到锁定图标。我希望图标移动到下一行,就像单词移动到下一行一样。 例子如下: NSTextAttachme
我正在学习这个很酷的教程 Implementing Rich Text with Images on OS X and iOS由@Duncan Groenewald 开发,能够在我的 UITextVi
我正在尝试使用 NSTextAttachment 在 UITextField 中显示图像,但我希望图像和文本之间有一些水平空间。但是,当如下所示将 NSKernAttributeName 属性添加到属
我之前使用 NSTextAttachmentCell 开发了一个 Mac 应用程序,并向其应用 NSTextfield,以便文本字段出现在插入的图像上方。请注意,此 NSTextAttachmentC
我会得到很多消息字符串 像这些: 1.hello {{http://i.imgur.com/f1cqT3ut.jpg}} 世界 {{http://i.imgur.com/f1cqT3ut.jpg}}
当从包含图像链接(https)的HTML字符串创建NSAttributedString时,下载的图像会以某种方式被缓存。我是怎么想到这个事实的? 安装应用。 打开应用程序。图片就在那里。 关闭应用程序
我正在尝试使用 NSAttributableString 设置 UILabel,如下所示: (x)第一项 (x)第二项 (x)第三项 其中 (x) 代表通过 NSTextAttachments 加载的
当我将图像附件添加到具有前景色集的 UITextView 时,图像会被设置的颜色遮挡: let attrString = NSMutableAttributedString(string: rawTe
我似乎无法通过 NSAttributedString 中的 NSTextAttachment 图像更改透明度。 我有一个字符串,我想淡入和淡出,但附加到该字符串的图像似乎没有随文本一起淡出。 我已经尝
之前,我将特定字符串更改为包含图像的 NSTextAttachment 以显示自定义表情符号。 字符串转NSTextAttachment代码 { guard let origi
我正在使用以下代码将 RSS 提要的原始 HTML 格式化为 NSAttributedString . HTML 包含 导致图像附加为 NSTextAttachment 的标签进入NSAttribut
我正在尝试使用 NSAttributableString 设置 UILabel,如下所示: (x)第一项 (x)第二项 (x)第三项 其中 (x) 代表通过 NSTextAttachments 加载的
我正在使用 NSAttributedString 将图像包含在字符串中。然而,图像有时会模糊,就像在非整数框架上绘制一样。 我试图确保每个 NSTextAttachment 的边界都是整数大小,但这似
是否可以在 iOS 上要显示 NSTextAttachment 的位置显示自定义 View ?我有自定义文本存储和布局管理器子类,但我不确定将代码放在哪里才能实际添加 subview 。 (我想要这个
在 editable = YES 和 selectable = NO 的 UITextView 中,我想禁用 NSTextAttachments 上的交互。更具体地说,我不想长按 NSTextAtta
我是一名优秀的程序员,十分优秀!