Изображения каталога активов внутри UIWebView

Xcode 9 сделал еще один шаг вперед с векторами внутри проектов iOS. По-видимому, он сохранит исходный PDF-файл, чтобы изображения можно было генерировать по мере необходимости с полным качеством.

Мне интересно, возможно ли получить доступ к этим изображениям из HTML внутри UIWebView?

Я могу представить три возможных способа сделать это:

  1. Некоторая магия, которую вы помещаете в свой HTML или CSS, которую iOS распознает и заменит. Например:

    <img src={{Asset Name}}>

  2. Знание схемы именования для доступа к активу. Например:

    <img src="some/path/asset~ipad@3x">

  3. "Визуализируйте" изображение вне UIWebView и передайте его.

Возможны ли какие-либо из них? Есть ли другой способ?

Учитывая, как далеко мы продвинулись с векторами, мне не хотелось бы предварительно рендерить каждую вариацию изображения и упаковывать их вне каталога ресурсов, если в этом нет необходимости.


person Axeva    schedule 05.09.2017    source источник


Ответы (1)


Сегодня мне нужно было преобразовать UIImage из XCAsset's в UIWebView.

Мое требование состояло в том, чтобы подготовить соответствующий HTML и загрузить его в UIWebView следующим образом.

self.myWebView.loadHTMLString(html, baseURL: nil)

Чтобы загрузить изображения из XCAsset, сначала загрузите изображение в UIImage, а затем преобразуйте его обратно в Base64 Encoding, затем поместите изображение в тег <img>.

Код выглядит следующим образом

let redClockImage = UIImage.init(named: "clock-red")!
let imageData:Data =  UIImagePNGRepresentation(self)!
let base64String = imageData.base64EncodedString()

let html = """
           //my html
           <img src="data:image/png;base64, \(base64String)" />
           //rest of my html
           """

//then i load this html into the webview
self.myWebView.loadHTMLString(html, baseURL: nil)

Для удобства я переместил преобразование UIImage -> Base64 String в расширение.

person Ratul Sharker    schedule 11.04.2018