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

StackOverflow https://stackoverflow.com/questions/1402028

  •  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) в массив символов (или написать для этого скрипт)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top