Действительно ли возможно представить файл векторного изображения на iPhone таким же образом, что можно представить битовый массив (png, jpeg) файл? Я попробовал eps и файлы PDF, ни один из которых, кажется, не работает – они отображены правильно в Интерфейсном Разработчике, но не отображаются, когда выполнено.
Консоль производит сообщение вроде, 'Не мог загрузить изображение "image.pdf", на которое ссылаются из пера в пакете с идентификатором "com.yourcompany.project"'
Все мои поиски на этом придумывают обсуждение рисования векторные файлы с помощью OpenGL и т.д. Действительно ли это - единственный путь? С тех пор нет никакого упоминания о векторной поддержке файла, я не уверен, если мои файлы не загружаются из-за проблем с файлами (я попробовал различные версии), или потому что они не поддерживаются.
PDF-файлы могут быть загружены с помощью UIWebView. Если вам нужно больше контроля, вы можете использовать Quartz 2D для рендеринга PDF-файлов: Quartz2D
Да, он поддерживает SVG.
Вы можете конвертировать ваши векторные файлы в SVG и визуализировать их путем преобразования в javascript с помощью такой библиотеки, как Raphael. Мои веб-сайты на основе Raphael имеют функциональность, подобную flash, и они прекрасно отображаются на iPhone - преимущество веб-стандартов!
Нет прямой поддержки форматов векторной графики, как это есть для PNG и JPEG. Любой рендеринг векторной графики будет выполняться программно, то есть обводка и заливка объектов контура с использованием вызовов рисования Quartz.
С помощью Core Graphics можно рендерить изображения PDF непосредственно, а также создавать их. Примерно так:
void DrawPDF (CGContextRef context, NSString *name)
{
NSURL *url = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: name ofType: @"pdf"]];
CGPDFDocumentRef doc = CGPDFDocumentCreateWithURL((CFURLRef)url);
CGPDFPageRef page = CGPDFDocumentGetPage(doc, 1);
CGRect box = CGPDFPageGetBoxRect(page, kCGPDFCropBox); //kCGPDFArtBox);
CGContextDrawPDFPage(context, page);
CGPDFDocumentRelease(doc);
}
UIWebView конечно для SVG.