Ich habe in vielen Posts gesehen, wie man die Größe des Bildes ändert, indem man das Seitenverhältnis beibehält. Diese Funktionen verwenden die Fixpunkte (Breite und Höhe) für RECT beim Ändern der Größe. In meinem Projekt muss ich die Größe der Ansicht jedoch nur anhand der Breite ändern. Die Höhe sollte automatisch anhand des Seitenverhältnisses festgelegt werden. jemand hilft mir, dies zu erreichen.
136
newWidth
Variable hier allerdings nicht wirklich , sie ist bereits vorhandeni_width
.UIGraphicsBeginImageContextWithOptions(CGSizeMake(newWidth, newHeight), NO, 0);
UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
Wenn Sie nicht wissen, ob das Bild im Hoch- oder Querformat angezeigt wird (z. B. nimmt der Benutzer ein Bild mit der Kamera auf), habe ich eine andere Methode erstellt, die die Parameter für die maximale Breite und Höhe verwendet.
Nehmen wir an, Sie haben ein
UIImage *myLargeImage
Verhältnis von 4: 3.Die Größe des UIImage beträgt 1024 x 768 im Querformat. 768x1024 wenn Porträt. Diese Methode erzeugt auch Bilder mit höherer Auflösung für die Retina-Anzeige.
quelle
min(ratioX, ratioY)
. Wenn die Breite größer ist, passt sie möglicherweise nicht zur maximalen Höhe.Beste Antwort Maverick 1st ist korrekt in Swift übersetzt (arbeitet mit der neuesten Version von Swift 3 ):
quelle
danke @ Maverick1st den Algorithmus, den ich implementiert habe
Swift
, in meinem Fall ist height der Eingabeparameterquelle
Diese Methode ist eine Kategorie in UIImage. Skaliert mit AVFoundation so, dass es in wenige Codezeilen passt. Vergessen Sie nicht zu importieren
#import <AVFoundation/AVFoundation.h>
.quelle
Swift 5- Version von Aspekt-Anpassung an Höhe , basierend auf der Antwort von @ János
Verwendet die moderne
UIGraphicsImageRenderer
API, sodass eine gültige APIUIImage
garantiert zurückgegeben wird.Sie können dies in Verbindung mit einem (vektorbasierten) PDF-Bildelement verwenden, um die Qualität bei jeder Rendergröße zu erhalten.
quelle
Am einfachsten ist es, den Rahmen von
UIImageView
undcontentMode
eine der Größenänderungsoptionen festzulegen.Der Code sieht folgendermaßen aus: - Dies kann als Dienstprogrammmethode verwendet werden. -
quelle
Programmatisch:
Storyboard:
quelle
Nun, wir haben hier einige gute Antworten für die Größenänderung von Bildern, aber ich ändere sie nur gemäß meinen Anforderungen. hoffe das hilft jemandem wie mir.
Meine Anforderung war
Möglicherweise möchten Sie dies auch für die Größenänderungsberechnung überprüfen .
quelle
Einfach AVFoundation importieren und verwenden
AVMakeRectWithAspectRatioInsideRect(CGRectCurrentSize, CGRectMake(0, 0, YOUR_WIDTH, CGFLOAT_MAX)
quelle
Um Ryans Antwort zu verbessern:
quelle
Wenn die Skalierung auf 0,0 eingestellt ist, wird der Skalierungsfaktor des Hauptbildschirms verwendet, der für Retina-Anzeigen 2,0 oder höher beträgt (3,0 auf dem iPhone 6 Plus).
quelle
Ryans Lösung @Ryan in schnellem Code
verwenden:
quelle
In Swift 3 gibt es einige Änderungen. Hier ist eine Erweiterung von UIImage:
quelle
Zeeshan Tufail und Womble antworten in Swift 5 mit kleinen Verbesserungen. Hier haben wir eine Erweiterung mit 2 Funktionen, um Bilder auf
maxLength
jede Dimension und JPEG-Komprimierung zu skalieren .quelle
Dieser war perfekt für mich. Hält das Seitenverhältnis und nimmt a
maxLength
. Breite oder Höhe wird nicht größer sein alsmaxLength
quelle
Berechnet die beste Höhe des Bildes für die verfügbare Breite.
quelle
Ich habe es viel einfacher gelöst
Der Multiplikator der Skala definiert die Abplatzung des Bildes, je kleiner der Multiplikator, desto kleiner das Bild. So können Sie überprüfen, was zu Ihrem Bildschirm passt.
Sie können den Multiplire auch erhalten, indem Sie die Bildbreite / Bildschirmbreite teilen.
quelle