Iphone Retina Display с пользовательскими изображениями Core Data - PullRequest
1 голос
/ 17 октября 2011

Я уже давно смотрю на этот форум по этой теме и до сих пор не понимаю, как успешно хранить изображения в Базовых данных для Retina Display.

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

Поскольку изображения не имеют расширения файла, версии сетчатки (если они существуют), очевидно, не могут иметь расширение 2х.

Поэтому я надеюсь, что кто-то может посоветовать мне, как и к чемуРазрешения лучше всего хранить для растровых изображений, созданных с помощью приложения, чтобы они лучше отображались как на устройствах с сетчаткой, так и без сетчатки.

Например, если на моем iPhone 3GS без сетчатки у меня есть UIImageView, которыйотображает изображение 55x60, в настоящее время я сохраняю изображение «thumbnail» размером 55x60.

На дисплее сетчатки, очевидно, я хотел бы иметь изображение для отображения 110x120.

Но, поскольку я не могу создать изображение с расширением в базовых данных, как мне поступить?

Если я решу создать только одно изображение, которое будет использоватьсядля обоих устройств, я просто идти с изображением 110x120?Как это работает - будет ли оно использовать полное изображение для устройства отображения сетчатки и уменьшать изображение для устройства без сетчатки?Или (и я надеюсь, что НЕТ) уменьшит изображение для устройства без сетчатки и снова увеличит изображение для сетчатки?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 17 октября 2011

Прежде всего: не храните изображения в Core Data. Просто проще (и более производительно!) Сохранить изображение в файловой системе (т. Е. В каталоге документов) и использовать базовые данные для хранения ссылки .

Тем не менее, если вы настаиваете на использовании Core Data для хранения этих данных, вы можете сохранить версию Retina, а затем определить, когда вы находитесь на устройстве без Retina, и выполнить масштабирование в памяти до версии без Retina. .

0 голосов
/ 17 октября 2011

Является ли причиной того, что вы хотите хранить UIImages в CoreData, чтобы ваши изображения не очищались ОС автоматически?

Если нет, вам следует поступить так, как упомянул Уэйн, и просто создать ссылки напуть к файлу в каталоге Documents.

Если вы пытаетесь избежать «очистки», просто сохраните NSData UIImage в качестве одного из свойств NSManagedObject, а затем при использовании масштабируйте его соответствующим образом.Кроме того, вы всегда можете масштабировать изображения, прежде чем помещать их в CoreData.

...