#swift #uilabel
#swift #uilabel
Вопрос:
В моей папке assets у меня есть en
папка, и здесь у меня есть несколько картинок, например, одна из них — B12.png
. Я не могу понять, как отобразить это локальное изображение в моем ярлыке. У меня есть такой код:
let imageData:Data = (UIImage.init(named: "en/B12.png")!).pngData()!
let base64String = imageData.base64EncodedString()
let htmlString = """
<html><body><img src="data:image/png;base64, (base64String)" /> width="360" height="240"></body></html>
"""
cell.questionText.attributedText = htmlString.convertToAttributedFromHTML()
но когда я запускаю этот код, я ничего не вижу в своей метке. Почему это происходит и как я могу решить эту проблему?
Комментарии:
1. Просто вставьте URL изображения. Создайте URL с путем, полученным из
Bundle.main.path(forResource: ofType:)
2. @mag_zbc, не могли бы вы добавить некоторые подробности, пожалуйста, потому что у меня возникли некоторые трудности с вашим комментарием 🙂
Ответ №1:
Если ваше изображение хранится в пакете вашего приложения, вы можете просто вставить URL изображения
if let imagePath = Bundle.main.path(forResource: "B12", ofType: "png") {
let htmlString = """
<html><body><img src="(imagePath)" /> width="360" height="240"></body></html>
"""
cell.questionText.attributedText = htmlString.convertToAttributedFromHTML()
}
Комментарии:
1. У меня такая ошибка —
Non-void function should return a value
, и я не вижу, как использовать вложенную папку для изображения:(2. Обновил мой ответ. Что касается вложенных папок, это не имеет значения.
Bundle.main.path(forResource: "B12", ofType: "png")
найдет ваше изображение независимо от местоположения, если оно находится в любом месте пакета приложения.3. У меня есть картинки с похожими названиями, но с другим содержимым, будет ли это работать для такой схемы?
4. а также еще одна проблема заключается в том, что моя метка ячейки становится невидимой, когда я добавляю к ней этот HTML
5. Как я вижу, ваше условие if обычно ложно, и оно не работает