Wie erkenne ich die Bildgröße nach dem Anwenden von aspect fit für das Bild in einer UIImageView?
Ich bin laden Sie ein Bild, um eine Bildansicht mit der mode-als "Aspekt-Fit". Ich muss wissen, auf welche Größe mein Bild wird skaliert. Bitte helfen Sie.
InformationsquelleAutor der Frage Nithin | 2011-06-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Siehe @Paul-de-Lange-Antwort statt diesem einen
Konnte ich nichts finden, was auf eine leicht zugängliche variable, die hatte das auch, also hier ist die brute-force-Weg:
InformationsquelleAutor der Antwort Rayfleck
Warum nicht mit der OS Funktion AVMakeRectWithAspectRatioInsideRect?
InformationsquelleAutor der Antwort Paul de Lange
Wollte ich
AVMakeRectWithAspectRatioInsideRect()
ohne das AVFoundation framework.So, ich habe implementiert die folgenden beiden Hilfsfunktionen:
Edit: Optimiert unten durch entfernen von doppelten Abteilungen.
Ende Bearbeiten
Dies dauert eine bestimmte Größe (der erste parameter) und behält sein Seitenverhältnis. Es füllt dann die gegebenen Grenzen (zweiter parameter), so viel wie möglich, ohne zu verletzen das Seitenverhältnis.
Mit dieser Antwort auf die ursprüngliche Frage:
Hinweis, wie das Bild bestimmt, das Seitenverhältnis, während Sie das Bild anzeigen, wird die Größe bestimmt, gefüllt zu werden.
Feedback ist sehr willkommen.
InformationsquelleAutor der Antwort Timo
Diese einfache Funktion berechnet die Größe des Bildes nach Aspekt passen:
InformationsquelleAutor der Antwort Oleh Kudinov
Vielleicht passt nicht der Fall, aber dieser einfache Ansatz mein problem zu lösen in einem ähnlichen Fall:
Nach Ansicht führt sizeToFit, wenn Sie die Abfrage Bildansicht.frame.Größe du dir das Bild anzeigen Größe passt, dass die neue Bildgröße.
InformationsquelleAutor der Antwort Emilio
Wollte ich auch zur Berechnung der Höhe nach dem Seitenverhältnis angewendet wird, um in der Lage sein, um die Berechnung der Höhe der Tabellenansicht Zelle. So erreichte ich über wenig Mathematik
Höhe und würde
Code snippet wäre
InformationsquelleAutor der Antwort zeeawan
Für Swift code unten
Und Rufen Sie Die Funktion
InformationsquelleAutor der Antwort Hardik Thakkar
Swift 3 Menschen Lesbare Version
InformationsquelleAutor der Antwort topLayoutGuide
InformationsquelleAutor der Antwort v_1
Die akzeptierte Antwort ist unglaublich kompliziert und fällt für einige Grenzfälle. Ich glaube, diese Lösung ist wesentlich eleganter:
InformationsquelleAutor der Antwort blkhp19
Hier ist meine Lösung für das gleiche problem:
https://github.com/alexgarbarev/UIImageView-ImageFrame
Vorteile:
InformationsquelleAutor der Antwort Aleksey
Diese Zeile kann diese Aufgabe
CGSize sizeInView = AVMakeRectWithAspectRatioInsideRect(imgViewFake.Bild.Größe, imgViewFake.bounds).Größe;
InformationsquelleAutor der Antwort Darshit Shah
Ich bin mit dem folgenden Swift:
Ich verwende es wie folgt:
InformationsquelleAutor der Antwort JollyJinx
Swift 3 UIImageView Erweiterung:
InformationsquelleAutor der Antwort paul king
Swift 4:
Rahmen für
.aspectFit
Bild -let x: CGRect = AVMakeRect(aspectRatio: myImage.size, insideRect: sampleImageView.frame)
InformationsquelleAutor der Antwort Jack
Den oben genannten Methoden nie geben die gewünschten Werte ein.Als Aspekt Passform behält das Seitenverhältnis, wir brauchen nur einfache Mathematik, die zum berechnen der Werte
Erkennen das Seitenverhältnis
Holen Sie sich die neuen Werte
InformationsquelleAutor der Antwort Suryanarayan Sahu
Wenn Sie wissen, dass nur die Breite der Bildansicht und wenn Sie die Höhe des Bildes ist dynamisch, dann brauchen Sie, um das Bild zu skalieren ist die Höhe, die entsprechend der gegebenen Breite zu entfernen, die weißen Flächen oben und unterhalb des Bildes. Verwenden Sie die folgende Methode aus hier um die Höhe zu skalieren des Bildes nach dem standard Breite des Bildschirms.
Und rufen Sie es von Ihrem cellForRowAtIndexPath: Methode wie diese:
InformationsquelleAutor der Antwort Md Rais
Hier mein AVFoundation-weniger Lösung.
Erste hier ist ein CGSize Erweiterung zur Berechnung einer Größe, die passen würde eine andere Größe:
Also die Lösung zu OP ' s problem ruft nach unten:
Auch hier ist eine weitere Verlängerung für die Montage von einem Rechteck in ein anderes rect (es nutzt den oben genannten CGSize-Erweiterung):
InformationsquelleAutor der Antwort Russian