Как визуализировать изображение внутри текста уценкиIOS

Программируем под IOS
Ответить
Anonymous
 Как визуализировать изображение внутри текста уценки

Сообщение Anonymous »

Я начну с того, что у меня весьма ограниченный опыт работы с Swift и SwiftUI, поэтому, возможно, я упустил некоторые очевидные вещи.
Моя проблема разделена на несколько проблемные области
  • Я хочу отобразить текстовую ссылку с использованием уценки в текстовом представлении в SwiftUI
  • Я хочу, чтобы метка этой ссылки содержала изображение рядом с текстом, чтобы текст и изображение были одновременно кликабельно
  • Мне нужно, чтобы это было сделано внутри текстового представления, которое затем можно было бы добавить в конец другого текстового представления.
Некоторый контекст
У меня есть несколько абзацев текста, каждый из которых взят из определенного источника, на который я хочу предоставить ссылку. Ссылка должна быть встроена в текст и находиться в конце каждого абзаца и иметь формат «Источник ». Я считаю, что поддержка уценки в SwiftUI — это самый простой способ добиться этого, поскольку она позволяет простому текстовому представлению содержать гиперссылку, выполнив: Text(.init("[Source](https://example.com)"))< /код>. Это продвинуло меня довольно далеко, но я упустил решающий шаг — включение значка в метку ссылки. На данный момент я был вынужден добавить значок после фактического текста ссылки, как показано в примере ниже.
Поэтому мой вопрос сводится к следующему: есть ли способ отобразить изображение внутри строку уценки в SwiftUI?
Упрощенный пример настройки моего кода
import SwiftUI

struct Paragraph {
text: String
url: String
}

struct ParagraphView: View {
let paragraph: Paragraph

var body: some View {
Text(paragraph.text)

// Less than ideal solution I have currently
+ Text(.init(" [Source](\(paragraph.url)) "))

+ Text(Image(systemName: "star")) // Example icon
}
}

В идеале мне бы хотелось сделать что-то вроде этого
struct ParagraphView: View {
let paragraph: Paragraph

var body: some View {
Text(paragraph.text)

+ Text(.init(" [Source \(IMAGE)](\(paragraph.url))"))
}
}

Для этого я пробовал использовать AttributedString и NSAttributedString
struct ParagraphView: View {
let paragraph: Paragraph

var markdown: String {
let str = NSMutableAttributedString(string: " [Source ")

let iconAttachment = NSTextAttachment()
iconAttachment.image = UIImage(systemName: "star")
let iconText = NSAttributedString(attachment: iconAttachment)

str.append(iconText)
str.append(NSAttributedString(string: "](\(paragraph.url))"))

return str.string
}

var body: some View {
Text(paragraph.text)

// Link works, but image is not rendered
+ Text(.init(markdown))
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... kdown-text
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»