将 UI 图像" In Between " UI 标签的文本中定位



我的应用程序使用 API 从 Web 服务器获取一些文本数据

文本数据以字符串数组形式出现。基本上每个元素都是一个段落。有时数组元素之一是"[IMAGE]",这意味着我必须在上一个和下一个段落之间插入一个特定的图像(我也使用 API 获得其链接(

例如,数组是 [ "AAA" , "BBB" , "[图像]" , "CCC" ]。然后图像必须在BBB和CCC之间显示

这是我从网络服务器获得响应的地方

let newsText = data[0]["text"] as! [String]
let images = data[0]["images"] as! [[String:Any]]

这就是我所做的


for para in newsText{
if(para == "[IMAGE]")
{
print("Image Found")
let paraImageLink = images[self.imageCount]["link"] as? String
let paraImage = self.urlToImage(url: paraImageLink!)
DispatchQueue.main.async {
let paraImageView = UIImageView(image: paraImage)
paraImageView.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
self.view.addSubview(paraImageView)
}
self.imageCount+=1
}
else{
DispatchQueue.main.async {
self.text.text?.append(contentsOf: para+"nnn")
}
}
} 

现在图像检索并显示成功,但它显示在屏幕的一角。这是正确的,因为我把 X:0 , Y: 0

但我的问题是我如何正确定位图像以实现我想要的

这是我模拟器的屏幕截图,图像在右上角,我想在段落之间显示它

截图 1

所有内容都在 UI 滚动视图中,主图像(不是角落图像(下方的所有文本都在单个 UI 标签中

编辑:

我尝试将属性字符串与附件一起使用

for para in newsText{
if(para == "[IMAGE]")
{
print("Image Found")
let paraImageLink = images[self.imageCount]["link"] as? String
let paraImage = self.urlToImage(url: paraImageLink!)
let imageAttachement = NSTextAttachment()
imageAttachement.image = paraImage
let imageString = NSAttributedString(attachment: imageAttachement)
DispatchQueue.main.async {
self.text.attributedText = imageString
}
self.imageCount+=1
}
else{
DispatchQueue.main.async {
self.text.text?.append(contentsOf: para+"nn")
}

问题是它没有产生预期的结果。检查此屏幕截图以查看它显示的内容屏幕截图 2.

我想这是因为您无法附加UI标签属性文本,如果我尝试这样做

self.text.attributedText.append = imageString

它显示错误 类型为"NSAttributedString?"的值没有成员"追加">

您可以使用这样的属性字符串来执行此操作。 首先创建 emptyString 变量,而不是当你得到字符串时,当你的 get image 将其添加到这个变量中时,它会作为 NSTextAttachmen

var text = String()

  1. 获取图像时,创建属性附件,例如:

let imageAttachment = NSTextAttachment()

2.将图像添加到附件中,例如:imageAttachment.image = UIImage(named: paraImage)

  1. 像:let imageString = NSAttributedString(attachment: imageAttachment)4.然后将文本属性属性添加到您的完整字符串中,例如

text.append(image1String)5.然后将其他文本字符串附加到您的完整字符串中,如下所示

text.append(NSAttributedString(string: "End of"))6.然后将字符串添加到文本中像这样查看

textView.attributedText = text

对于面糊了解你可以看到这个

最新更新