Как загрузить изображение, хранящееся в статической библиотеке - PullRequest
4 голосов
/ 10 сентября 2009

в моем приложении для iphone я связываюсь со статической библиотекой, содержащей файлы и изображения объективного c. Можно ли загрузить изображение из статической библиотеки? Я пытался

[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];

но очевидно, что изображение не находится в основном пакете, оно находится в статической библиотеке, и класс NSBundle, кажется, предлагает только доступ к основному пакету и пакетам с известными путями. Есть ли способ загрузить изображение из статической библиотеки на iPhone?

Ответы [ 3 ]

12 голосов
/ 10 сентября 2009

Самый простой способ - сохранить изображение во встроенном символьном массиве:

const char imageData[] = { 0x00, 0x01, 0xFF, ... };

А потом, когда вам это нужно:

UIImage *image = [UIImage imageWithData:[NSData dataWithBytesNoCopy:imageData length:sizeof(imageData) freeWhenDone:NO]];

Вам нужно будет вручную преобразовать двоичные данные вашего изображения (после сохранения в формате PNG или JPEG) в массив символов (или написать для этого скрипт)

1 голос
/ 10 сентября 2009

Непонятно, что вы подразумеваете под "изображением [...] в статической библиотеке". Статические библиотеки представляют собой простые файлы (с расширением .a) и содержат заархивированные объектные файлы. Пакеты, с другой стороны, представляют собой иерархии каталогов (содержащие исполняемые файлы и другие ресурсы).

Если вы связываете статическую библиотеку, код из библиотеки включается непосредственно в ваш исполняемый файл. В комплект приложения не копируются файлы, поэтому нет способа скопировать изображение.

Если у вас есть файл изображения со статической библиотекой, вы можете просто скопировать его в свой комплект приложений, добавив этап сборки копирования файлов к своей цели в Xcode.

0 голосов
/ 16 марта 2010

Используете ли вы Абсолютный путь на этапе создания файлов копирования статической библиотеки и указываете его на клиентское приложение? Я пробовал что-то вроде этого, и к изображениям все еще нельзя получить доступ.

...