2017-09-18 1 views
0

In meiner Anwendung herunterzuladen brauche ich ein Bild von einem Server herunterzuladen und in einem Tableview angezeigt werden soll. Die App ist jedoch für alle Geräte und in beiden Ausrichtungen (Querformat und Hochformat) geeignet.iOS Bildgröße für

Ich habe jetzt zwei Probleme. Erstens weiß ich nicht, in welcher Größe ich das Bild herunterladen soll oder ob ich einen Größenindex erstellen soll und je nach Gerät das entsprechende Bild herunterladen soll. Aber das Problem besteht darin, dass die Größe des Bildes in beiden Richtungen unterschiedlich ist, also müsste ich das Bild erneut herunterladen, wenn die Ausrichtung geändert wird?

Zweitens habe ich ein Skript auf meinem Server, wo ich das Bild und die Größe als Parameter in der URL übergeben kann, und es wird die Größe des Bildes auf dem Server vor dem Download ändern. Ich bin mir nicht sicher, ob das eine gute Idee ist, da es viel Verarbeitungszeit kosten kann, wenn viele Leute die App gleichzeitig benutzen.

Dies ist eine Frage, die ich seit Ewigkeiten habe und nachdem ich viele Artikel und andere Fragen gelesen habe, verstehe ich immer noch nicht. Um klar zu sein verstehe ich den Unterschied zwischen den @ 1x, @ 2x und @ 3x Formaten und ich frage nicht nach diesen.

Wenn etwas unklar ist, zögern Sie bitte nicht zu fragen, und ich werde die entsprechenden Informationen hinzufügen.

Antwort

1

Ich werde all das Bild für Sie Umgang erklären.

Das Wichtigste zuerst, die x1 x2 x3 sind für Bilder in der App selbst. Sie werden in Assets für Bilder hinzugefügt, die sich in der App befinden (wie Symbole, Hintergründe usw.). Wenn Sie ein Image herunterladen oder das Image vom Server abrufen, sollten Sie sich keine Gedanken über x1 x2 und x3 machen, da diese Images Daten und keine Assets sind. So, jetzt ist das beiseite.

Zweitens, bei der Beantwortung Ihrer ursprünglichen Frage haben Sie 3 Möglichkeiten, um zu implementieren, was Sie brauchen. Entweder geben Sie dem Back-End die Größe jedes Bildes und seiner URL an. Sie legen also den jeweiligen Rahmen fest und laden dann das Bild herunter. Eine andere Möglichkeit besteht darin, TableView dynamisch zu machen, so dass die Größe der Zelle automatisch angepasst wird, wenn das Image heruntergeladen wird. this sollte Ihre Frage beantworten. Eine letzte Lösung besteht darin, auf dem UIImage eine Eigenschaft namens content mode zu verwenden. Weitere Details dazu sind here

Happy Codierung!

+0

Vielen Dank für Ihre Antwort. Vor allem, ich denke ich vermisse das Konzept von 1x etc. Vielen Dank für das Aufräumen. Zweitens wusste ich die Verwendung des Inhaltsmodus und ich versuche nicht, die Tabellenansicht zu vergrößern, was ich versuche zu verstehen, welche Größe ich das Bild herunterladen soll, besonders wenn die Ausrichtung geändert wird, sollte ich ein anderes Bild herunterladen? –

+0

laden Sie das Bild in seiner Originalgröße herunter, wenn Sie alles anzeigen möchten.Für mich ist es besser, das Bild von deiner Seite zu behandeln, als die Rückseiten langsam werden zu lassen, um sie alle zu verarbeiten. und wenn Sie Ihr Gerät drehen, wird die Anwendung mit Ihren Bildern ausgerichtet, so dass Sie sich keine Gedanken über die Orientierung machen sollten, wenn Sie das automatische Layout verwenden –

+0

Das ist eine sehr nette Idee, die ich verwenden werde. Gibt es jedoch eine Daumen hoch Regel über die Größe des Bildes. Die Originalbilder sind ziemlich groß und bis zu verschiedenen MB, ich weiß das ist viel zu viel, also kennst du eine gute Größe die ich verkleinern kann? –

0

Ich würde vorschlagen, 2 unterschiedlich große Bilder derselben Bilddatei zu halten und sie auf der Grundlage der Orientierung geladen werden.

Wenn Sie beispielsweise die App im Hochformat verwenden, wird das Bild "image_portrait.jpg" geladen, ansonsten "image_landscape.jpg".

Sie können auch unterschiedlich große Bilder basierend auf 2x und 3x Geräten speichern, da 1x jetzt fast veraltet ist.

Also, wenn jemand Bild auf iPhone 5 oder 6 lädt, könnten Sie laden "image_portrait_2x.jpg", für 6 plus oder 7 plus "image_portrait_3x.jpg".

Es wäre auch gut, NSCache zu verwenden, damit die Bilder nicht jedes Mal heruntergeladen werden, wenn sich die Ausrichtung ändert oder die Tabellenansicht gescrollt wird.