Как загрузить изображение, хранящееся в статической библиотеке
-
05-07-2019 - |
Вопрос
в моем приложении для iphone я связываюсь со статической библиотекой, содержащей файлы и изображения объективного c. Можно ли загрузить изображение из статической библиотеки? Я пытался
[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];
но очевидно, что изображение не находится в основном пакете, оно находится в статической библиотеке, и класс NSBundle, кажется, предлагает только доступ к основному пакету и к пакетам с известными путями. Есть ли способ загрузить изображение из статической библиотеки на iPhone? Р>
Решение
Непонятно, что вы подразумеваете под "изображением [...] в статической библиотеке". Статические библиотеки представляют собой простые файлы (с расширением .a) и содержат заархивированные объектные файлы. Пакеты с другой стороны - это иерархии каталогов (содержащие исполняемые файлы и другие ресурсы).
Если вы связываете статическую библиотеку, код из библиотеки включается непосредственно в ваш исполняемый файл. В комплект приложения не копируются файлы, поэтому нет способа скопировать изображение.
Если у вас есть файл изображения со статической библиотекой, вы можете просто скопировать его в свой пакет приложений, добавив этап сборки копирования файлов к своей цели в Xcode.
Другие советы
Самый простой способ - сохранить изображение во встроенном символьном массиве:
const char imageData[] = { 0x00, 0x01, 0xFF, ... };
А потом, когда вам это нужно:
UIImage *image = [UIImage imageWithData:[NSData dataWithBytesNoCopy:imageData length:sizeof(imageData) freeWhenDone:NO]];
Вам нужно будет вручную преобразовать двоичные данные изображения (после сохранения в формате PNG или JPEG) в массив символов (или написать для этого скрипт)
Используете ли вы абсолютный путь на этапе создания файлов копирования статической библиотеки и указываете его на клиентское приложение? Я пытался что-то вроде этого, и изображения до сих пор не доступны.