Не удалось получить объект UIImage с использованием метода imageNamed - PullRequest
1 голос
/ 20 января 2009

Я хочу получить изображение от объекта IImage из указанного местоположения пути. Вот код.

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  
                                                         NSUserDomainMask,   YES);

NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:@"image1.png"];
NSLog(writablePath);
UIImage *image=[UIImage imageNamed:writablePath];

Я получаю объект изображения ноль. так в чем может быть проблема? Я также изменил, что image1.png есть на writablePath.

Ответы [ 3 ]

7 голосов
/ 20 января 2009

Я полагаю, что UIImage imageNamed ищет изображения из пакета приложения, а не по полному пути. Вы можете использовать UIImage imageWithContentsOfFile для загрузки с полного пути (но он не будет кэшироваться), или просто поместить изображение в ваш пакет и использовать imageNamed.

Вам также необходимо убедиться, что файл действительно находится в вашем пакете приложений, а не просто находится в каталоге вашего проекта.

0 голосов
/ 30 ноября 2012

Я думаю использовать это:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  
                                                         NSUserDomainMask,   YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:@"image1.png"];
NSLog(writablePath);

=== insted of выше, напишите это ===

UIImage *image=[UIImage imageWithContentsOfFile:writablePath];

0 голосов
/ 25 октября 2012

Точный ответ на ваш вопрос заключается в том, что вы получаете ноль, потому что вы используете imageNamed: который ищет изображение, используя заданное (путь) имя относительно относительно корня пакета (то есть .app каталог в развернутом приложении), в то время как вы даете ему абсолютный путь к каталогу документа.

Вы действительно можете использовать imageNamed для загрузки изображений из подкаталога вашего пакета. Это требует двух вещей:

  1. что ваши изображения на самом деле находятся в подкаталоге в вашем развернутом пакете, а не просто в подкаталоге или группе в вашем проекте XCode - поскольку они сворачиваются в корневой каталог. Другими словами, вам нужна «голубая группа» в XCode (ссылка на папку).

  2. Вы используете относительный путь в imageNamed.

Так [UIImageView imageNamed: @ "subdir / foo"] загрузит foo.png или foo@2x.png, где эти файлы появятся в "синей" группе в XCode под названием "subdir".

Вы также можете использовать это, чтобы найти изображение в подкаталоге ваших документов, так как вы знаете, где будут создаваться документы относительно вашего пакета, но это немного странно. Для загрузки изображений из документов вы должны использовать imageWithContentsOfFile: вместо imageNamed:

Мне надоело искать ответ на подобные вещи, я провел некоторое тестирование и подробно изложил этот и остальные результаты (с изображениями!) В ответе на этот вопрос:

UIImage imageNamed требует pathForResource?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...