Mit Xcode 6 können VECTOR-Bildelemente verwendet werden. Wie werden sie verwendet?

72

Ich habe mit Xcode 6 gegen Bild-Assets herumgespielt, als ich etwas sehr Interessantes bemerkte : Wir können jetzt Vektorbilder darin angeben (siehe im Bereich Dienstprogramme, nachdem Sie Images.xcassets ausgewählt haben).

Ich habe eine kleine App (mit einem großen UIImageView) mit einem .SVG-Bild (hat nicht funktioniert), dann ein .EPS (hat auch nicht funktioniert) und schließlich ein .PDF ausprobiert. Es hat funktioniert! Nun, obwohl ich das Bild gesehen habe, schien es pixelig und nicht vektorisiert zu sein.

Es scheint also, dass Apple den Weg für Vektorsymbole / Bilder bereitet. Keine zig Millionen Versionen von App-Symbolen mehr, keine "@ 2x" -Bilder mehr. Aber kann jemand diese Funktion freischalten?

Jean Le Moignan
quelle
Hier gibt es einen Blog zu diesem Thema: ericasadun.com/2014/06/09/… Sie hatten jedoch kein Glück, nur ein Bild zu verwenden, sondern mussten 1 PDF für jede Bildgröße verwenden. Zu diesem Zeitpunkt denke ich, dass die Funktion noch nicht vollständig ist.
vcsjones
@vcsjones Ich stimme nicht zu. Es scheint mir einfach großartig zu arbeiten.
Matt
@ Jean Le Moignan Kannst du bitte den Link teilen, unter dem du das gelesen hast?
Entwickler
@Developer Ich wünschte, ich könnte, aber ich stützte die Frage ausschließlich auf Versuch und Irrtum in Xcode, nicht auf schriftliches Material.
Jean Le Moignan
Ich habe festgestellt, dass beim Erstellen einer tab-basierten iOS-App die Standard-Symbole für Registerkartenschaltflächen pdfin einem Asset-Katalog enthalten sind. Ich pdfbin mir nicht sicher, was die Anforderungen für diese s sind (ich hatte keine Zeit, sie in -say- Adobe Illustrator zu öffnen).
Nicolas Miari

Antworten:

58

Hier sind einige meiner Gedanken nach einigen Experimenten mit Vektor-Assets:

1. Zeitunterstützung kompilieren

Nach mehreren Versuchen glaube ich, dass es nur eine Unterstützung für die Kompilierungszeit ist. Xcode generiert alle 1x-, 2x- und 3x-Bilder zur Kompilierungszeit. Das heißt, es funktioniert mit älteren iOS-Versionen. Gleichzeitig bedeutet dies, dass es im endgültigen Build immer noch im PNG-Format vorliegt und Sie kein verlustfreies Lagerbild aus der Vektordatei erhalten können.

2. Warum PDF anstelle von SVG oder anderen Formaten?

Bei SVG und anderen Formaten enthält das Vektorbild keine tatsächlichen Größeninformationen, während PDF Größeninformationen enthält. Ich denke, Xcode 6 verwendet die Größeninformationen in PDF als tatsächliche Anzeigegröße und generiert dann 2x 3x Dateien aus dem Vektorbild.

Größeninformationen in PDF

3. Die Dateigröße von PDF spielt keine Rolle

Zu Beginn befürchten wir, dass PDF viel größer als PNGs sein wird. Wir haben versucht, es unter http://smallpdf.com/ zu komprimieren, und es funktioniert ziemlich gut. Wenn die ursprüngliche PDF-Datei jedoch nicht wie bereits erwähnt im Build enthalten ist, spielt die Dateigröße von PDF keine Rolle.

Ich werde diesen Beitrag weiter bearbeiten, wenn ich andere Dinge finde.

EDIT 14-09-25

@mredig erwähnte, dass für iOS Bitmaps zur Kompilierungszeit generiert werden, für OSX jedoch das Vektorbild in skalierbarer Form.

via: http://martiancraft.com/blog/2014/09/vector-images-xcode6/

Allen Hsu
quelle
1
Ich glaube auch, dass dies so funktioniert ... Sie erhalten zur Laufzeit keine skalierbaren Assets, aber Xcode erstellt zur Erstellungszeit Bitmap-Assets für Sie, sodass Sie nicht mehrere PNGs exportieren müssen. Es wäre interessant, den kompilierten Asset-Katalog (.car) zu überprüfen (zu dekompilieren?), Aber ich habe keinen Weg gefunden, dies zu tun.
Hagi
1
Ich habe diesen Artikel gefunden: martiancraft.com/blog/2014/09/vector-images-xcode6 Es wird erklärt, dass für iOS Bitmaps zur Kompilierungszeit generiert werden, für OSX jedoch das Vektorbild in skalierbarer Form.
mredig
Was ist mit iPad-Ressourcen?
Eugen Martynov
Wie kann ich kein Original-PDF einfügen? Ich kann in Xcode keine Einstellung dafür finden.
8suhas
Für neuere Versionen von xcode könnte dieser Link hilfreich sein: icons8.com/articles/how-to-use-vectors-in-xcode-7
Milad Faridnia
25

So experimentieren Sie mit Vektorgrafiken im Asset-Katalog in Xcode 6:

  1. Erstellen Sie einen neuen Bildsatz.

  2. Wählen Sie einen leeren Bildsteckplatz in Ihrem Bildsatz aus und schalten Sie das Popup im Attributinspektor auf Vektoren. Sie haben jetzt einen einzigen universellen Bildsteckplatz.

  3. Ziehen Sie eine Vektor-PDF in diesen Steckplatz.

Wo immer dieses Bild verwendet wird, wird es ohne Rasterung an seinen Kontext angepasst (z. B. eine Bildansicht mit fester Größe), wie in diesem Screenshot gezeigt:

Geben Sie hier die Bildbeschreibung ein

EDIT Trotz dieser Antwort, die größere PDF Zeichnung wurde Rastern. Siehe jetzt https://stackoverflow.com/a/45623000/341994 : In Xcode 9 wird die Vektor-PDF-Datei ohne Rasterung ordnungsgemäß skaliert.

BEARBEITEN In Xcode 11 funktioniert diese Formel: Im Asset-Katalog müssen Sie das Einblendmenü "Skalen" auf "Einzelne Skalen" setzen und das vektorbasierte Bild in den 1x-Steckplatz einfügen. Aktivieren Sie Vektordaten beibehalten. Erledigt.

matt
quelle
1
Ich glaube nicht, dass diese Funktion für App-Symbole gedacht ist. Nur für App-interne Grafiken.
Matt
1
Das Problem, das ich habe, ist, dass bei Verwendung des automatischen Layouts in der Ansicht, in der ich das PDF-Bildmaterial verwende (z. B. einen UIButton), die Inhaltsgröße von der ursprünglichen PDF-Bildmaterialgröße übernommen wird, was nicht in allen Situationen ideal ist (I. Vielleicht möchten Sie einen größeren Knopf auf dem iPad. Kennen Sie einen Weg, um das zu umgehen?
Flainez
23
Warum PDF und nicht SVG? Es ist so seltsam.
Stan
1
@matt kannst du mir bitte sagen, wie man die pdf datei erstellt? Kann ich mit Photoshop PDF-Vektordateien erstellen?
Kilik52
1
@Koen nein, ein PNG ist kein Vektorbild, sondern eine Bitmap. Die PDF-Datei enthält im Wesentlichen eine Reihe von Anweisungen zum Zeichnen von Pfaden, Füllungen und Farben. Daher ist diese Art von Kompatibilität mit Bitmap -> Vektor nicht möglich. Da pdfs nicht erforderlich sind, halten Sie sich gut an pngs
rwyland
22

Mit diesem Online-Tool können Sie Ihre Bilder von SVG in PDF konvertieren

http://www.fileformat.info/convert/image/svg2pdf.htm

1- Bild hochladen

2- Wählen Sie Breite: 24px, Höhe: 24px

3- Kopieren Sie in Ihr Xcode-Projekt

4- Gehen Sie zu Images.xcassets

5- Klicken Sie mit der rechten Maustaste und erstellen Sie einen neuen Bildsatz

6- Wählen Sie im rechten Bereich (Attributinspektor) aus.

7- Ändern Sie die Typen in Vektor

8- Ziehen Sie Ihr PDF-Bild per Drag & Drop dorthin

9- Verwenden Sie es in Ihrem Projekt

Fareed Alnamrouti
quelle
Ich wollte wirklich, dass das funktioniert. Aber es hat bei mir nicht funktioniert. Ich versuche, diese Assets in einer React Native-App zu verwenden. Vielleicht ist das das Problem.
Josh Habdas
Hallo @Josh, wenn Sie eine neue Frage mit Ihrem Fall sehr gut erklärt öffnen können, können wir Ihnen vielleicht dabei helfen, auch wenn es sich um eine
reaktionsfähige
Guter Vorschlag, Fareed. Anstatt die Unterstützung zur Kompilierungszeit von PDF zu verwenden, habe ich mich entschlossen, mit einem Skript zu arbeiten, um PNGs in verschiedenen Größen aus einfachen SVG-Dateien automatisch zu generieren. Ich habe einen Artikel darüber geschrieben, wie das Skript für die Erstellung von Symbolen
Josh Habdas
1
Wenn Sie keine Breite oder Höhe / Tonne SVGs festlegen möchten, können Sie cloudconvert ( cloudconvert.com/svg-to-pdf ) verwenden und einfach alle Ihre Dateien auswählen
Sirens
4
Falls jemand interessiert ist - in XCode 8 müssen Sie anstelle von Vektor in Typen die Option Einzelskala in Skalen auswählen.
AX
7

Ein Tipp: Erstellen Sie PDF @ 2x Auflösung und Dateinamen mit @ 2x ([email protected]). Sie erhalten perfekte Schärfungs- und Kontrastbilder, speziell für iPad 2 und Mini. Geben Sie hier die Bildbeschreibung ein

Roman Bambura
quelle
3

Ich erstelle einfach eine benutzerdefinierte Schriftart mit Symbolen oder sogar App-Logos und verwende sie auf diese Weise und ziehe sie in meine App. Ich kann dann die Schriftgrößen für Geräte und Bildschirmauflösungen sehr einfach anpassen.

Jim Moore bei Fotosyn
quelle
Kann Designern jedoch Kopfschmerzen bereiten, wenn Sie Anforderungen an Bilder haben, die sowohl als Schriftarten als auch als normale .pngs implementiert sind :)
Ari Braginsky
3

Wenn Sie nach einer Antwort auf die Frage suchen: "Wie kann ich Vektorgrafiken in meiner iOS-App verwenden und sie immer mit wunderschöner Perfektion skalieren?" , dann kann ich UIImage+PDFvon https://github.com/mindbrix/UIImage-PDF wärmstens empfehlen

Ich finde das funktioniert absolut genial. Anstatt alle Bilder im PNG-Format mit drei verschiedenen Auflösungen zu haben, habe ich jetzt für jedes Bild eine winzige kleine PDF-Datei. Ich kann diese wie folgt anzeigen:

// Objective C:
self.icon.image = [UIImage imageWithPDFNamed:@"icon.pdf" fitSize:self.icon.frame.size];

// Swift:
icon.setImage(UIImage(PDFNamed: "icon.pdf", fitSize: icon.frame.size))

Neben fitSize:gibt es auch atWidth:, atHeightund atSize:.

Ich verwende UIImage+PDFfür alle Bilder, die vektorisiert werden können, und verwende nur noch PNGs für Fotos.

Ich führe meine PDF-Dateien auch über http://smallpdf.com/compress-pdf aus , um die kleinsten Dateigrößen für sie sicherzustellen.

Erik

Erik van der Neut
quelle
1

In Fällen, in denen Sie App-Symbole erstellen, funktioniert PDF nicht. Vielleicht möchten Sie sich ein Projekt ansehen, für das ich gerade ein Projekt namens Speculid erstellt habe . Es kann PNG, PDF usw. aus Quellbildern einschließlich SVG-Dateien erstellen. Feedback wäre sehr dankbar.

Leogdion
quelle