2013-06-26 3 views
1

Есть ли какие-либо отрицательные последствия для исключения расширения файла при использовании [UIImage imageWithContentsOfFile:] или лучше всего указать тип файла в пути?UIImage imageWithContentsOfFile: - включить расширения файлов или нет?

В Apple Docs состояние, которое требует initWithContentsOfFile: следующий путь в качестве параметра:

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

Однако путь для [UIImage imageWithContentsOfFile:] просто заявляет:

Полный или частичный путь к файлу.

Я просто задавался вопросом, стоит ли включать расширение файла или даже не беспокоиться об этом. Благодаря!

+0

Сторона примечания. В нижней части страницы документации есть ссылка на сообщение о проблемах. Вы должны сообщить об этой несогласованности. Метод imageWithContentsOfFile: 'является просто ярлыком вызова' initWithContentsOfFile: ', поэтому они должны быть одинаковыми. – rmaddy

ответ

0

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

NSBundle pathForResource:ofType: 

метод. В этом методе вы указываете расширение файла за пределами имени файла. Я относительно уверен, что «частичный путь» относится к относительным путям. Вы можете запросить файл в корневом каталоге вашего пула только по имени файла, так как его путь относительно вашего пакета находится в корне, другими словами, просто имя файла.

+0

При использовании 'UIImage imageNamed:' вы должны указать корень имени изображения. Нет расширения, нет '@ 2x' или другого суффикса. – rmaddy

+1

@rmaddy с iOS4 расширение является необязательным, но только если файл PNG. –

+0

@JamesP Да, я должен был упомянуть, что это справедливо только для изображений png. Благодарю. – rmaddy

0

Лучший способ заключается в использовании NSBundle pathForResource:ofType:

Если у вас есть эти изображения:

И вы хотите, чтобы загрузить его в UIImage, вы будете использовать этот код:

UIImage *myImage; 
myImage = [UIImage imageWithContentsOfFile:[NSBundle pathForResource:@"myImage" ofType:@"png"]]; 

Этот код также загружает «[email protected]» в iPhone Retina без необходимости добавлять код @ 2x в код.

Обязательно укажите точное имя файла. «myimage» может не работать на устройстве, поскольку исходное имя файла имеет верхний «I» («myImage.png»).

Смежные вопросы